sp_bindrule (Transact-SQL)

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Database

Mengikat aturan ke kolom atau ke jenis data alias.

Penting

Fitur ini akan dihapus dalam versi Microsoft SQL Server mendatang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. GunakanBatasan Unik dan Periksa Batasan sebagai gantinya. Batasan CHECK dibuat dengan menggunakan kata kunci CHECK dari pernyataan CREATE TABLE atau ALTER TABLE .

tautan topikIkon Konvensi Sintaks Transact-SQL

Sintaks

  
sp_bindrule [ @rulename = ] 'rule' ,   
     [ @objname = ] 'object_name'   
     [ , [ @futureonly = ] 'futureonly_flag' ]   

Argumen

[ @rulename = ] 'rule' Adalah nama aturan yang dibuat oleh pernyataan CREATE RULE. aturan adalah nvarchar(776), tanpa default.

[ @objname = ] 'object_name' Apakah tabel dan kolom, atau jenis data alias yang aturannya akan diikat. Aturan tidak dapat diikat ke teks, ntext, gambar, varchar(max), nvarchar(max), varbinary(max), xml, jenis yang ditentukan pengguna CLR, atau kolom tanda waktu. Aturan tidak dapat terikat ke kolom komputasi.

object_nameadalah nvarchar(776) tanpa default. Jika object_name adalah nama satu bagian, nama tersebut diselesaikan sebagai jenis data alias. Jika itu adalah nama dua atau tiga bagian, pertama-tama diselesaikan sebagai tabel dan kolom; jika resolusi ini gagal, resolusi diselesaikan sebagai jenis data alias. Secara default, kolom yang ada dari jenis data alias mewarisi aturan kecuali aturan telah terikat langsung ke kolom.

Catatan

object_name dapat berisi karakter bracket [ dan ] sebagai karakter pengidentifikasi yang dibatasi. Untuk informasi selengkapnya, lihat Pengidentifikasi Database.

Catatan

Aturan yang dibuat pada ekspresi yang menggunakan jenis data alias dapat terikat ke jenis data kolom atau alias, tetapi gagal dikompilasi saat direferensikan. Hindari menggunakan aturan yang dibuat pada jenis data alias.

[ @futureonly = ] 'futureonly_flag' Hanya digunakan saat mengikat aturan ke jenis data alias. future_only_flagadalah varchar(15) dengan default NULL. Parameter ini ketika diatur ke futureonly mencegah kolom yang ada dari jenis data alias mewarisi aturan baru. Jika futureonly_flag NULL, aturan baru terikat ke kolom apa pun dari jenis data alias yang saat ini tidak memiliki aturan atau yang menggunakan aturan yang ada dari jenis data alias.

Mengembalikan Nilai Kode

0 (keberhasilan) atau 1 (kegagalan)

Keterangan

Anda dapat mengikat aturan baru ke kolom (meskipun menggunakan batasan CHECK lebih disukai) atau ke jenis data alias dengan sp_bindrule tanpa mengikat aturan yang ada. Aturan lama ditimpa. Jika aturan terikat ke kolom dengan batasan CHECK yang ada, semua batasan dievaluasi. Anda tidak dapat mengikat aturan ke tipe data SQL Server.

Aturan diberlakukan ketika pernyataan INSERT dicoba, bukan pada pengikatan. Anda dapat mengikat aturan karakter ke kolom jenis data numerik , meskipun operasi INSERT tersebut tidak valid.

Kolom yang ada dari jenis data alias mewarisi aturan baru kecuali futureonly_flag ditentukan sebagai futureonly. Kolom baru yang ditentukan dengan jenis data alias selalu mewarisi aturan. Namun, jika klausa ALTER COLUMN dari pernyataan ALTER TABLE mengubah jenis data kolom menjadi jenis data alias yang terikat ke aturan, aturan yang terikat ke jenis data tidak diwariskan oleh kolom. Aturan harus secara khusus terikat ke kolom dengan menggunakan sp_bindrule.

Saat Anda mengikat aturan ke kolom, informasi terkait ditambahkan ke tabel sys.columns . Saat Anda mengikat aturan ke jenis data alias, informasi terkait ditambahkan ke tabel sys.type .

Izin

Untuk mengikat aturan ke kolom tabel, Anda harus memiliki izin UBAH pada tabel. Izin CONTROL pada jenis data alias, atau izin UBAH pada skema tempat jenis berada, diperlukan untuk mengikat aturan ke jenis data alias.

Contoh

A. Mengikat aturan ke kolom

Dengan asumsi bahwa aturan bernama today telah dibuat dalam database saat ini dengan menggunakan pernyataan CREATE RULE, contoh berikut mengikat aturan ke HireDate kolom Employee tabel. Saat baris ditambahkan ke Employee, data untuk HireDate kolom dicentang terhadap today aturan.

USE master;  
GO  
EXEC sp_bindrule 'today', 'HumanResources.Employee.HireDate';  

B. Mengikat aturan ke jenis data alias

Dengan asumsi keberadaan aturan bernama rule_ssn dan jenis data alias bernama ssn, contoh berikut mengikat rule_ssn ke ssn. Dalam pernyataan CREATE TABLE, kolom jenis ssn mewarisi rule_ssn aturan. Kolom jenis ssn yang ada juga mewarisi rule_ssn aturan, kecuali jika futureonly ditentukan untuk futureonly_flag, atau ssn memiliki aturan yang terikat langsung ke aturan tersebut. Aturan yang terikat ke kolom selalu diutamakan daripada yang terikat ke jenis data.

USE master;  
GO  
EXEC sp_bindrule 'rule_ssn', 'ssn';  

C. Menggunakan futureonly_flag

Contoh berikut mengikat rule_ssn aturan ke jenis ssndata alias . Karena futureonly ditentukan, tidak ada kolom jenis ssn yang terpengaruh.

USE master;  
GO  
EXEC sp_bindrule rule_ssn, 'ssn', 'futureonly';  

D. Menggunakan pengidentifikasi yang dibatasi

Contoh berikut menunjukkan penggunaan pengidentifikasi yang dibatasi dalam parameter object_name .

USE master;  
GO  
CREATE TABLE [t.2] (c1 int) ;  
-- Notice the period as part of the table name.  
EXEC sp_bindrule rule1, '[t.2].c1' ;  
-- The object contains two periods;   
-- the first is part of the table name   
-- and the second distinguishes the table name from the column name.  

Lihat juga

Prosedur Tersimpan Sistem (Transact-SQL)
Prosedur Tersimpan Mesin Database (Transact-SQL)
CREATE RULE (Transact-SQL)
DROP RULE (Transact-SQL)
sp_unbindrule (T-SQL)
Prosedur Tersimpan Sistem (Transact-SQL)