Aracılığıyla paylaş


sp_bindrule (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL DatabaseMicrosoft 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.