Kural (Transact-SQL) oluşturma
Kural adı verilen bir nesne oluşturur.Bir kural, ne zaman bir sütun veya bir diğer ad veri türü bağlı, o sütuneklenebilir kabul edilebilir değerler belirtir.
Ö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 kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.Bunun yerine Kontrol kısıtlamaları kullanmanızı öneririz.Kontrol kısıtlamaları create table veya alter table onay anahtar sözcüğünü kullanarak oluşturulur.Daha fazla bilgi için, bkz. DENETLEME kısıtlamaları. |
Bir sütun veya diğer ad veri türü, kendisine bağlı tek bir kural olabilir.Ancak, bir sütun kuralı ve ilişkili bir veya daha fazla denetim kısıtlamaları olabilir.Bu doğrudur, tüm kısıtlamalar değerlendirilir.
Sözdizimi
CREATE RULE [ schema_name . ] rule_name
AS condition_expression
[ ; ]
Bağımsız değişkenler
schema_name
Kural ait olduğu şema addır.rule_name
Yeni kuralın adını alır.Kuralı adları için kuralları ile uymak gerekir tanımlayıcıları.Kural sahibi adını belirten isteğe bağlıdır.condition_expression
Koşul veya kuralı tanımlamak koşullar olabilir.Kural herhangi bir ifade where yan tümce tümcesinde geçerli olabilir ve aritmetik işleçler, operatörler ve yüklemler (örneğin, ın, between gibi) gibi öğeler içerebilir.Bir kural, sütunları veya diğer veritabanı nesnelerinin başvuru yapamazsınız.Veritabanı nesnelerini değil, başvuru yerleşik işlevler dahil edilebilir.Kullanıcı tanımlı işlevler kullanılamaz.condition_expressionbir değişkeni içerir.At işareti (@) her bir yerel değişken önündeki.update ve INSERT deyimile girilen değer ifade gösterir.Herhangi bir adı veya sembolün kural oluştururken değeri temsil etmek için kullanılabilir, ancak ilk karakter olmalıdır at işareti (@).
Not
diğer ad veri türlerini kullanan ifadeler üzerinde kuralları oluşturmaktan kaçının.Kuralları bağlama sonra diğer ad veri türlerini kullanan ifadeler, sütunları veya diğer ad veri türleri için kurallar oluşturulabilir, ancak ifadeler başvurulduğunda, derlemek başarısız.
Açıklamalar
Başka Kural Oluştur ilişkilendirilemez Transact-SQL tek bir toplu işdeyimlerinde.Kurallar oluşturulur saat veritabanında zaten var olan verileri geçerli değildir ve sistem veri türleri için kurallar bağlanamaz kuralları.Daha fazla bilgi için, bkz. Veri türleri (veritabanı altyapısı).
Kural, yalnızca geçerli veritabanında oluşturulabilir.Bir kural, yürütmekoluşturduktan sonrasp_bindrule bir sütun veya diğer ad veri türü kuralı bağlamak için. Bir kural, sütun veri türüyle uyumlu olmalıdır.Örneğin, "@ değer gibi bir %" bir kural olarak, sayısal sütuniçin kullanılamaz.A rule cannot be bound to a text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, CLR kullanıcı tanımlı türü, or timestamp sütun.Bir kural için hesaplanan bir sütunbağlanamaz.
Karakter ve tarih sabitleri tek tırnak işareti (') içine alın ve ikili sabitleriyle 0 x koyun.Kural bağlı, sütun ile uyumlu değilse, SQL Server Veritabanı Altyapısı bir değer eklendiğinde, ancak değil, kural var. bağlı bir hata iletisi döndürüyor
Yalnızca bir değeri içine eklemek veya güncelleştirmek için diğer ad veri türü, bir veritabanı sütun çalıştığınızda bağlı bir diğer ad veri türü için bir kural etkinleştirilir.Kurallar değişkenleri test değil çünkü bir sütun aynı veri türünde bağlı bir kural tarafından reddedilen bir diğer ad veri türü değişkeni için bir değer atamayın.
Kural hakkında bir rapor almak için sp_help.Bir kural, yürütmekmetnini görüntülemek içinsp_helptext parametre olarak kural adı. Kuralı yeniden adlandırmak için kullanın sp_rename.
Kural aynı ada sahip yeni bir tane oluşturulur ve kural ilişkisiz kullanarak olmalıdır önce drop kural kullanarak kesilmesini sp_unbindrule'u kesilmeden önce.Bir kural bir sütunbağını kaldırmak için kullanmak sp_unbindrule'u.
Önceki bağlarken olmadan, bir sütun veya veri türü için yeni bir kural bağlayabilirsiniz; Yeni kural önceki geçersiz kılar.Sütun için her zaman bağlı kuralları diğer ad veri türleri ile ilişkili kurallar daha önceliklidir.Bir kural bir sütun bağlama sütun diğer ad veri türü zaten bağlanmış bir kuralı değiştirir.Ancak bağlama veri türü için bir kural, bir sütun diğer ad veri türü bağlı bir kural yerine geçmez.Kurallar sütunları ve diğer ad veri türleri üzerinde kuralları zaten bağlı olan aşağıdaki tablo öncelik etkisini gösterir.
Yeni Kural bağlı |
Eski kural bağlı diğer ad veri türü |
Eski kural bağlı Column |
---|---|---|
Diğer ad veri türü |
Eski kuralı değiştirildi |
Değişiklik yok |
Column |
Eski kuralı değiştirildi |
Eski kuralı değiştirildi |
Bir sütun hem varsayılan hem de kendisiyle ilişkilendirilmiş bir kural varsa, varsayılan kural tarafından tanımlanan etki alanı içinde almaları gereken.Bir kural ile çakışan varsayılan hiçbir zaman eklenir.SQL Server Database Engine, böyle bir varsayılan eklemeye çalıştığında her saat bir hata iletisi oluşturuyor.
İzinler
yürütmek create kural, en azından, bir kullanıcının geçerli veritabanında Kural Oluştur izni ve alter izni kuralı oluşturulduğu şema üzerinde olmalıdır.
Örnekler
A.Bir aralıkile kural oluşturma
Aşağıdaki örnek sütun veya sütunlar, bu kurala bağlı olduğu eklenen tamsayılar aralık sınırlayan bir kural oluşturur.
CREATE RULE range_rule
AS
@range>= $1000 AND @range <$20000;
B.Bir liste ile kural oluşturma
Aşağıdaki örnek, yalnızca kural listelenenler için (Bu kurala bağlandığı) sütun veya sütunlar girilen fiili değerleri sınırlayan bir kural oluşturur.
CREATE RULE list_rule
AS
@list IN ('1389', '0736', '0877');
C.Bir deseni ile kural oluşturma
Aşağıdaki örnek, tireyle herhangi iki karakterlik yapýdadýr için bir kural oluşturur (-), karakterleri veya hiçbir karakter ve bitiş arasında bir tamsayı ile herhangi bir numara 0 ile 9.
CREATE RULE pattern_rule
AS
@value LIKE '__-%[0-9]'
Ayrıca bkz.