Share via


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 notÖ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.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

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]'