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

Ganti nama Batasan CHECK di SQL Server menggunakan T-SQL

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server UNTUK XML Path membuat node berulang

  2. Apa arti dari SELECT ... FOR XML PATH(' '),1,1)?

  3. Cara menggunakan Sum, Avg dan Count dalam Select Statement - Tutorial SQL Server / TSQL Part 128

  4. SQL Server 2000 - Server Tertaut

  5. Mendapatkan Id dari baris yang saya perbarui di Sql Server