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.