Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Ganti nama Kunci Asing di SQL Server menggunakan T-SQL

Anda dapat menggunakan sp_rename prosedur tersimpan sistem untuk mengganti nama batasan kunci asing di SQL Server.

Tujuan dari prosedur tersimpan ini adalah untuk memungkinkan Anda mengganti nama objek yang dibuat pengguna di database saat ini, sehingga Anda juga dapat mengganti nama objek lain seperti tabel, kolom, tipe data alias, dll.

Sintaks

Sintaks sp_rename seperti ini:

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'   
    [ , [ @objtype = ] 'object_type' ]

Jadi kode Anda bisa seperti ini:

sp_rename 'schema_name.old_fk_name', 'new_fk_name';

Perhatikan bahwa dokumentasi Microsoft menyatakan bahwa saat mengganti nama batasan (seperti kunci asing), Anda harus memenuhi syarat nama yang ada dengan nama skema.

Anda mungkin atau mungkin tidak mendapatkan kesalahan jika Anda menghilangkan skema, tetapi mungkin ide yang baik untuk mengikuti saran Microsoft yang satu ini.

Contoh berikut menunjukkan saya mengganti nama kunci asing.

Contoh 1 – Tinjau Semua Kunci Asing

Pertama, saya akan melihat kunci asing di database (sehingga saya dapat memutuskan mana yang akan diganti namanya).

SELECT
  name AS 'Foreign Key',
  SCHEMA_NAME(schema_id) AS 'Schema',
  OBJECT_NAME(parent_object_id) AS 'Table',
  OBJECT_NAME(referenced_object_id) AS 'Referenced Table'
FROM sys.foreign_keys;

Hasil:

+--------------------------------+----------+---------+--------------------+
| Foreign Key                    | Schema   | Table   | Referenced Table   |
|--------------------------------+----------+---------+--------------------|
| FK_Albums_Artists              | dbo      | Albums  | Artists            |
| FK_Albums_Genres               | dbo      | Albums  | Genres             |
| FK__Artists__Country__4AB81AF0 | dbo      | Artists | Country            |
+--------------------------------+----------+---------+--------------------+

Kunci asing ketiga ( FK__Artists__Country__4AB81AF0 ) telah diberi nama oleh sistem. Sistem menamakannya karena saya lupa memberikan nama saat saya membuatnya.

Mari kita beri nama kunci asing ini dengan lebih ringkas.

Contoh 2 – Ganti Nama Kunci Asing

Inilah bit yang mengganti nama kunci asing.

sp_rename 'dbo.FK__Artists__Country__4AB81AF0', 'FK_Artists_Country';

Seperti yang disebutkan, nama lama (yang sudah ada) didahulukan, lalu nama baru.

Jadi sekarang jika saya memilih semua kunci asing, saya mendapatkan hasil berikut.

SELECT
  name AS 'Foreign Key',
  SCHEMA_NAME(schema_id) AS 'Schema',
  OBJECT_NAME(parent_object_id) AS 'Table',
  OBJECT_NAME(referenced_object_id) AS 'Referenced Table'
FROM sys.foreign_keys;

Hasil:

+--------------------+----------+---------+--------------------+
| Foreign Key        | Schema   | Table   | Referenced Table   |
|--------------------+----------+---------+--------------------|
| FK_Albums_Artists  | dbo      | Albums  | Artists            |
| FK_Albums_Genres   | dbo      | Albums  | Genres             |
| FK_Artists_Country | dbo      | Artists | Country            |
+--------------------+----------+---------+--------------------+

Saya telah berhasil mengganti nama kunci asing.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pagination di SQL Server menggunakan OFFSET/FETCH

  2. Inilah Tiga Alasan Mengapa Anda Mungkin Melihat Aktivitas Puncak di Instance SQL Anda

  3. Menggunakan DateTime dalam SqlParameter untuk Prosedur Tersimpan, kesalahan format

  4. Haruskah Anda memilih tipe data UANG atau DECIMAL(x,y) di SQL Server?

  5. Menyisipkan beberapa baris dalam satu kueri SQL?