sp_bindrule (Transact-sql)
Bir sütun veya bir diğer ad veri türü için bir kural bağlar.
Önemli |
---|
Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmayın ve bu özelliği kullanmakta olan uygulamaları mümkün olduğunca erken bir zamanda değiştirin.Kullanım UNIQUE kısıtlamaları ve Check kısıtlamalarıyerine. KONTROL kısıtlamaları check anahtar sözcüğünü kullanarak oluşturulur create table veya alter table deyimleri. |
Transact-SQL Sözdizim Kuralları
Sözdizimi
sp_bindrule [ @rulename = ] 'rule' ,
[ @objname = ] 'object_name'
[ , [ @futureonly = ] 'futureonly_flag' ]
Bağımsız değişkenler
@rulename='rule'
KURAL oluşturma deyimi ile oluşturulan bir kural adıdır. ruleise nvarchar(776), hiçbir varsayılan ile.@objname='object_name'
Tablo ve sütun veya kurala bağlanacak olan diğer ad veri türü değil. Bir kural için bağlanamaz bir text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, kullanıcı tanımlı clr türü veya timestampsütun. Bir kural için hesaplanmış bir sütun bağlanamaz.object_nameise nvarchar(776)hiçbir varsayılan ile. Eğer object_namebir tek parça ad diğer ad veri türü çözülmüştür. Eğer iki veya üç bölümlü adı, tablo ve sütun ilk çözümlenir; Bu başarısız olursa, diğer ad veri türü çözümlenir. Varsayılan olarak, diğer ad veri türü varolan sütunları devralır rulesürece kural doğrudan sütuna bağlı.
[!NOT]
object_namedirsek içerebilir ve [] karakter olarak ayrılmış tanımlayıcı karakter. Daha fazla bilgi için, bkz. Veritabanı tanımlayıcıları.
[!NOT]
Diğer veri türlerini kullanan ifadeler üzerinde oluşturulan kurallar, sütunları veya diğer veri türleri için bağlanabilir ancak onlar başvurulan derlemek başarısız. Diğer veri türleri üzerinde oluşturulan kurallar kullanmaktan kaçının.
@futureonly= 'futureonly_flag'
Yalnızca diğer ad veri türü için bir kural bağlama kullanılır. future_only_flagise varchar(15)null varsayılan. Bu parametre ayarlandığında futureonly ad veri türü varolan sütunları Yeni kural devralmasını önler. Eğer futureonly_flagNULL, şu anda hiçbir kural var veya diğer ad veri türü varolan bir kuralı kullanıyorsanız herhangi bir sütun diğer ad veri türü için yeni kural bağlı.
Dönüş Kodu Değerleri
0 (başarılı) veya 1 (hata)
Açıklamalar
(Denetim kısıtlamasını kullanarak tercih edilen olsa da) yeni bir kural bir sütuna bağlamak için bir diğer ad veri türü veya sp_bindrule varolan bir kuralı yığınının olmadan. Eski kuralı geçersiz kılınır. Bir kural ile varolan bir denetim kısıtlaması sütuna bağlı tüm kısıtlamalar değerlendirilir. Bir kural için bağlanamıyor bir SQL Serververi türü.
INSERT deyimi çalıştı, değil, bağlayıcı kural uygulanır. Sütun için bir karakter kuralı bağlayabilirsiniz numericveri türü, böyle ekleme işlemi geçerli olmasa.
Diğer ad veri türü varolan sütunları devralan Yeni kural sürece futureonly_flagolarak belirtilen futureonly. Yeni sütun, diğer ad veri türü her zaman tanımlı kural devralır. Ancak, veri türüne bağlı kuralı alter column yan tümcesini alter table deyimi, bir kurala bağlı diğer ad veri türü için bir sütunun veri türünü değişirse, sütuna göre devralınmadı. Kural özellikle sütunu kullanarak bağlanmalıdır sp_bindrule.
Sütun için bir kural bağladığınızda, ilgili bilgiler eklenir sys.columns tablosu. Diğer ad veri türü için bir kural bağladığınızda, ilgili bilgiler eklenir sys.types tablosu.
İzinler
Bir kural bir tablo sütuna bağlamak için tablo üzerinde alter izninizin olması gerekir. Diğer ad veri türü izni denetlemek veya şema türü ait olduğu, bir diğer ad veri türü için bir kural bağlamak için gerekli izni alter.
Örnekler
A.Bir kural bir sütunu bağlama
Varsayarak adında bir kural todayoluşturuldu Kural Oluştur deyimini kullanarak geçerli veritabanında, aşağıdaki örnek kurala bağlar HireDatesütununda Employeetablosu. İçin bir satır eklendiğinde Employee, veriler için HireDatesütun karşı denetlenir todaykuralı.
USE master;
GO
EXEC sp_bindrule 'today', 'HumanResources.Employee.HireDate'
USE master;
GO
EXEC sp_bindrule 'today', 'HumanResources.Employee.HireDate'
B.Diğer ad veri türü için bir kural bağlama
Adında bir kural var varsayarak rule_ssnadlı bir diğer ad veri türü ssn, aşağıdaki örnek rule_ssniçin ssn. Türü sütunları create table deyiminde ssndevralan rule_ssnkuralı. Varolan sütun türü ssnda devralan rule_ssn, sürece kural futureonly için belirtilen futureonly_flag, ya ssngörüneceği için doğrudan bağlı bir kuralı vardır Sütunları her zaman bağlı kuralları bu veri türlerine bağlı önceliklidir.
USE master;
GO
EXEC sp_bindrule 'rule_ssn', 'ssn'
USE master;
GO
EXEC sp_bindrule 'rule_ssn', 'ssn'
C.C.futureonly_flag kullanma
Aşağıdaki örnek rule_ssnad veri türü için kural ssn. Çünkü futureonlyBelirtilen türdeki varolan sütun yok ssnetkilenir.
USE master;
GO
EXEC sp_bindrule rule_ssn, 'ssn', 'futureonly'
USE master;
GO
EXEC sp_bindrule rule_ssn, 'ssn', 'futureonly'
D.Sınırlandırılmış tanımlayıcıları kullanarak
Aşağıdaki örnek sınırlandırılmış tanımlayıcıları kullanımını gösterir object_nameparametresi.
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.
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.
Ayrıca bkz.
Başvuru
Sistem saklı yordamları (Transact-sql)