Anda dapat menggunakan sp_rename
prosedur tersimpan sistem untuk mengganti nama CHECK
batasan di SQL Server.
Tujuan dari prosedur tersimpan ini adalah untuk memungkinkan Anda mengganti nama objek yang dibuat pengguna di database saat ini. Jadi Anda juga bisa menggunakannya untuk mengganti nama objek lain seperti tabel, kolom, alias tipe data, 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_constraint_name', 'new_constraint_name';
Perhatikan bahwa dokumentasi Microsoft menyatakan bahwa saat mengganti nama batasan, Anda harus memenuhi syarat nama yang ada dengan nama skema.
Contoh berikut menunjukkan cara mengganti nama CHECK
kendala.
Contoh 1 – Pilih Batasan untuk Mengganti Nama
Pertama, mari kita daftar CHECK
batasan dalam database, sehingga kami dapat memutuskan mana yang akan diganti namanya.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Hasil:
+-----------------+----------+----------------+----------------------------------------+ | name | Schema | Table | definition | |-----------------+----------+----------------+----------------------------------------| | chkPrice | dbo | ConstraintTest | ([Price]>(0)) | | chkValidEndDate | dbo | ConstraintTest | ([EndDate]>=[StartDate]) | | chkTeamSize | dbo | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) | | chkJobTitle | dbo | Occupation | ([JobTitle]<>'Digital Nomad') | +-----------------+----------+----------------+----------------------------------------+
Mari kita ganti nama batasan kedua ( chkValidEndDate ).
Mari kita hapus Valid bagian sehingga menjadi chkEndDate .
Contoh 2 – Ganti Nama Batasan
Jalankan ini untuk mengganti nama batasan.
sp_rename 'dbo.chkValidEndDate', 'chkEndDate';
Jadi nama lama (yang sudah ada) didahulukan, diikuti dengan nama baru.
Jadi sekarang jika saya memilih semua CHECK
kendala lagi, saya mendapatkan hasil berikut.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Hasil:
+-------------+----------+----------------+----------------------------------------+ | name | Schema | Table | definition | |-------------+----------+----------------+----------------------------------------| | chkPrice | dbo | ConstraintTest | ([Price]>(0)) | | chkEndDate | dbo | ConstraintTest | ([EndDate]>=[StartDate]) | | chkTeamSize | dbo | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) | | chkJobTitle | dbo | Occupation | ([JobTitle]<>'Digital Nomad') | +-------------+----------+----------------+----------------------------------------+
Nama kendala telah diubah.
Seperti disebutkan, sp_rename
prosedur tersimpan tidak terbatas hanya CHECK
kendala. Anda dapat menggunakan sintaks yang sama persis untuk mengganti nama batasan kunci asing, tabel, kolom, tipe data alias, atau objek yang ditentukan pengguna lainnya.
Namun, Microsoft menyarankan agar tidak mengganti nama prosedur tersimpan, pemicu, fungsi yang ditentukan pengguna, atau tampilan. Dalam kasus seperti itu, Microsoft merekomendasikan Anda sebagai gantinya, lepaskan objek dan buat ulang dengan nama baru.