Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Database
Microsoft Fabric'te SQL veritabanı
Bir kuralı bir sütuna veya bir takma ad veri tipine bağlar.
Önemli
Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Benzersiz kısıtlamalar kullanın ve kısıtlamaları kontrol edin. CHECK kısıtlamaları, CREATE TABLE veya ALTER TABLE ilerindeki CHECK anahtar kelimesi kullanılarak oluşturulur.
Transact-SQL söz dizimi kuralları
Sözdizimi
sp_bindrule
[ @rulename = ] N'rulename'
, [ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
Arguments
[ @rulename = ] N'rulename'
Bu ifadeyle CREATE RULE oluşturulan bir kuralın adı.
@rulenamenvarchar(776)'dır ve varsayılan yoktur.
[ @objname = ] N'objname'
Kuralın bağlanacağı tablo ve sütun veya takma ad veri tipi. @objnamenvarchar(776)'dır ve varsayılan yoktur.
Bir kural, bir metin, ntext, image, varchar(max), nvarchar(max),varbinary(max),xml, CLR kullanıcı tanımlı tip veya zaman damgası sütununa bağlanamaz. Bir kural, hesaplanan bir sütuna bağlanamaz.
@objnamenvarchar(776) ve varsayılan yoktur. Eğer @objname tek parçalı bir isimse, bir takma ad veri tipi olarak çözülür. Eğer iki veya üç bölümlü bir isim ise, önce tablo ve sütun olarak çözülür; Bu çözünürlük başarısız olursa, bir alias veri tipi olarak çözülür. Varsayılan olarak, mevcut alias veri tipi sütunları, bir kural doğrudan sütuna bağlı olmadıkça @rulename miras alır.
@objname , parantez ([ ve ]) karakterlerini ayırt edilmiş tanımlayıcı karakterler olarak içerebilir. Daha fazla bilgi için bkz . Veritabanı tanımlayıcıları.
Alias veri tiplerini kullanan ifadelerde oluşturulan kurallar, sütunlara veya alias veri tiplerine bağlanabilir, ancak referans verildiğinde derlenemezler. Alias veri tiplerinde oluşturulan kurallardan kaçının.
[ @futureonly = ] 'gelecekten'
Sadece bir kuralı bir takma ad veri tipine bağlamakta kullanılır.
@futureonlyvarchar(15)'tir, varsayılan NULLolarak . Bu parametre, 'ye futureonlyayarlandığında, mevcut bir alias veri tipindeki sütunların yeni kuralı devralmasını engeller.
Eğer @futureonlyNULLise, yeni kural, şu anda kuralı olmayan veya mevcut alias veri tipi kuralını kullanan herhangi bir alias veri tipi sütununa bağlıdır.
Dönüş kodu değerleri
0 (başarı) veya 1 (başarısızlık).
Açıklamalar
Yeni bir kuralı bir sütuna bağlayabilirsiniz (ancak kısıtlama CHECK kullanmak tercih edilir) ya da mevcut kuralı kaldırmadan bir alias veri türüne sp_bindrule bağlayabilirsiniz. Eski kural geçersiz kalır. Bir kural, mevcut CHECK bir kısıtlama içeren bir sütuna bağlıdırsa, tüm kısıtlamalar değerlendirilir. Bir kuralı SQL Server veri tipine bağlayamazsınız.
Kural, bir INSERT ifade denendiğinde uygulanır, bağlayıcı aşamada değil. Bir karakter kuralını sayısal veri tipine sahip bir sütuna bağlayabilirsiniz, ancak böyle bir INSERT işlem geçerli değildir.
Mevcut takma adının veri tipi sütunları, yeni kuralı devralır, ancak @futureonly olarak belirtilmezse futureonly. Takma adla tanımlanan yeni sütunlar her zaman kuralı devralır. Ancak, bir ALTER TABLE ifadenin maddesi ALTER COLUMN bir sütunun veri tipini kurala bağlı bir takma ad veri tipine değiştirirse, veri tipine bağlı kural sütun tarafından miras alınmaz. Kural, sütuna özel olarak bağlanmalıdır.sp_bindrule
Bir kuralı bir sütuna bağladığınızda, ilgili bilgiler tabloya sys.columns eklenir. Bir kuralı bir alias veri tipine bağladığınızda, ilgili bilgiler tabloya sys.types eklenir.
Permissions
Bir kuralı tablo sütununa bağlamak için tabloda izin almanız ALTER gerekir.
CONTROL Alias veri tipine veya ALTER türün ait olduğu şema üzerindeki izin, bir kuralı bir alias veri tipine bağlamak için gereklidir.
Örnekler
A. Bir kuralı bir sütuna bağlama
Mevcut veritabanında adlandırılmış bir kuralın today bu ifadeyle CREATE RULE oluşturulduğunu varsayarsak, aşağıdaki örnek kuralı HireDate tablonun Employee sütununa bağlar. Bir satır eklendiğinde Employee, sütunun verisi HireDate kurala today göre kontrol edilir.
USE master;
GO
EXECUTE sp_bindrule 'today', 'HumanResources.Employee.HireDate';
B. Bir kuralı alias veri tipine bağlama
Bir kural ve adında rule_ssnssnbir takma adın varsayımında, aşağıdaki örnek 'ye ssnbağlanırrule_ssn. Bir CREATE TABLE ifadede, tip ssn sütunlar kuralı rule_ssn devralır. Mevcut tip ssn sütunlar da kuralı rule_ssn devralır; ancak @futureonlyiçin sadece futureonly belirtilmedikçe veya ssn doğrudan ona bağlı bir kural varsa. Sütunlara bağlı kurallar, veri tiplerine bağlı varsayılan kurallara her zaman öncelik gösterir.
USE master;
GO
EXECUTE sp_bindrule 'rule_ssn', 'ssn';
C.
futureonly seçeneğini kullanın
Aşağıdaki örnek, kuralı rule_ssn takma ad veri tipine ssnbağlar. Belirtildiği için futureonly , mevcut tip ssn sütunları etkilenmez.
USE master;
GO
EXECUTE sp_bindrule rule_ssn, 'ssn', 'futureonly';
D. Sınırlandırılmış tanımlayıcılar kullanın
Aşağıdaki örnek, @objname parametrede sınırlandırılmış tanımlayıcıların kullanımını göstermektedir.
USE master;
GO
CREATE TABLE [t.2] (c1 INT);
-- Notice the period as part of the table name.
EXECUTE 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.