CREATE RULE (Transact-SQL)

Kural adı verilen bir nesne oluşturur. Bir sütun veya bir diğer ad veri türü için bağlandığında, kural bu sütuna eklenmiş kabul edilebilir değerleri 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.Check kısıtlamaları yerine kullanmanızı öneririz. Check kısıtlamaları create table veya alter table check anahtar sözcüğünü kullanarak oluşturulur. Daha fazla bilgi için, bkz. UNIQUE kısıtlamaları ve Check kısıtlamaları.

Bir sütun veya diğer ad veri türü, kendisine bağlı tek bir kural olabilir. Ancak bir sütunu kuralı ve ilişkili bir veya daha fazla denetim kısıtlamaları olabilir. Bu doğruysa, tüm kısıtlamalar değerlendirilir.

Konu bağlantısı simgesi Transact-SQL Sözdizim 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 adıdır. Kural adları için kuralları ile uymak gerekir tanımlayıcıları. Kural sahibi adını belirten isteğe bağlı.

  • condition_expression
    Koşul veya koşulların bu kuralı tanımlamak olduğunu. Kural, where yan tümcesinde geçerli herhangi bir ifade olabilir ve aritmetik işleçler, ilişkisel işleçler ve yüklemler (örneğin, IN, gibi between) gibi öğeler içerebilir. Kural, sütunları veya diğer veritabanı nesneleri başvuru yapamazsınız. Veritabanı nesneleri başvuru değil yerleşik işlevler dahil edilebilir. Kullanıcı tanımlı işlevler kullanılamaz.

    condition_expressionbir değişkeni içerir. At işareti (@) önündeki her yerel bir değişken. GÜNCELLEŞTİRME veya ekleme deyimi ile girilen değer ifade gösterir. Herhangi bir ad veya sembol Kural oluştururken değeri temsil etmek için kullanılabilir, ancak ilk karakter olmalıdır işareti (@).

    [!NOT]

    Diğer veri türlerini kullanan ifadeler kuralları oluşturmaktan kaçının. Diğer veri türleri, sütunları veya diğer veri türleri için kurallara bağlamayı sonra kullanan ifadeler üzerinde kurallar oluşturulabilir, ancak başvurulan derlemek ifadeleri başarısız.

Açıklamalar

Kural Oluştur, diğer ile ilişkilendirilemez Transact-SQLtek bir toplu iş deyimlerinde. Kurallar Kurallar oluşturduğunuz sırada veritabanında mevcut verilere uygulanmaz ve kuralları sistem veri türleri bağlanamaz.

Kural, yalnızca geçerli veritabanında oluşturulabilir. Siz bir kural oluşturduktan sonra idam sp_bindrule bir sütun veya diğer ad veri türü kurala bağlamak için. Kural sütunun veri türüyle uyumlu olmalıdır. Örneğin "@ değeri gibi bir %" kural olarak, bir sayısal sütun için kullanılamaz. 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.

Karakter ve Tarih sabitleri tek tırnak işareti (') içine alın ve ikili sabitleri 0 x koyun. Kural bağlı, sütun ile uyumlu değilse, SQL Server Veritabanı Altyapısıbir değer eklendiğinde, ama değil kurala bağlı olduğunda hata iletisi döndürür.

Yalnızca bir değer eklemek veya güncelleştirmek için diğer ad veri türü bir veritabanı sütununu çalıştığınızda bir diğer ad veri türü bağlı bir kural etkinleştirilir. Kurallar değişkenleri test değil çünkü, aynı veri türünde bir sütunla ilişkili bir kural tarafından reddedilmiş bir diğer ad veri türü değişkeni için bir değer atamayın.

Bir kural bir rapor almak için sp_help. Kural metni görüntülemek için execute sp_helptext parametre olarak kural adı. Kuralı yeniden adlandırmak için kullanın sp_rename.

Kural aynı ada sahip yeni bir bir oluşturulur ve kural ilişkisiz kullanarak olmalıdır önce drop kural kullanarak kesilmesini sp_unbindrule kesilmeden önce. Kesin bir kural kullanmak sp_unbindrule.

Önceki yığınının olmadan bir sütun veya veri türü için yeni bir kural bağlayabilir; Yeni kural önceki geçersiz kılar. Sütunları her zaman bağlı kuralları diğer veri türleri için ilişkili kurallar daha önceliklidir. Bir kural bir sütunu bağlama zaten bağlanmış bu sütunu ad veri türü için bir kural değiştirir. Ama bir kural için bir veri bağlama türü bir diğer ad veri türü sütununa bağlı bir kural yerine geçmez. Kurallar sütunları ve diğer veri türleri üzerinde kuralları zaten bağlı olan aşağıdaki tabloda öncelik etkin gösterir.

Yeni kural bağlı

Eski kuralı bağlı

diğer ad veri türü

Eski kuralı bağlı

Sütun

Diğer ad veri türü

Eski kuralı değiştirildi

Değişiklik yok

Sütun

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 aralığı içinde olmalıdır. Bir kural ile çakışan varsayılan asla eklenir. SQL Server veritabanı altyapısı, her zaman böyle bir varsayılan eklemeye çalıştığında hata iletisi oluşturur.

İzinler

KURAL oluşturmak, en azından yürütmek için bir kullanıcının geçerli veritabanında Kural Oluştur izni ve alter izni kuralı oluşturulmaktadır şema olmalıdır.

Örnekler

A.Bir aralığı ile kural oluşturma

Aşağıdaki örnek, bu kurala bağlandığı sütun veya sütunları eklenen tamsayılar aralığı sınırlayan bir kural oluşturur.

CREATE RULE range_rule
AS 
@range>= $1000 AND @range <$20000;

CREATE RULE range_rule
AS 
@range>= $1000 AND @range <$20000;

B.Bir liste ile kural oluşturma

Aşağıdaki örnek, yalnızca bu kural içinde listelenen (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');

CREATE RULE list_rule
AS 
@list IN ('1389', '0736', '0877');

C.Bir deseni ile kural oluşturma

Aşağıdaki örnek, herhangi iki karakterlik bir çizgi deseni takip için bir kural oluşturur (-), herhangi bir karakter veya hiçbir karakter ve bir tamsayı ile biten sayısı 0ile 9.

CREATE RULE pattern_rule 
AS
@value LIKE '__-%[0-9]'

CREATE RULE pattern_rule 
AS
@value LIKE '__-%[0-9]'

Ayrıca bkz.

Başvuru

ALTER TABLE (Transact-SQL)

Varsayılan (Transact-sql) oluştur

Tablo (Transact-sql) oluştur

Varsayılan (Transact-sql) bırak

RULE (Transact-sql) bırak

Ifadeler (Transact-sql)

sp_bindrule (Transact-sql)

sp_help (Transact-sql)

sp_helptext (Transact-sql)

sp_rename (Transact-sql)

sp_unbindrule (Transact-sql)

NEREDE (Transact-sql)