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.