Aracılığıyla paylaş


KURAL YARAT (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAnaliz Platformu Sistemi (PDW)Microsoft Fabric'te SQL veritabanı

Kural adlı bir nesne oluşturur. Bir sütuna veya diğer ad veri türüne bağlı olduğunda, kural bu sütuna eklenebilen kabul edilebilir değerleri belirtir.

Ö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. Bunun yerine denetim kısıtlamaları kullanmanızı öneririz. Denetim kısıtlamaları CREATE TABLE veya ALTER TABLE'un CHECK anahtar sözcüğü kullanılarak oluşturulur. Daha fazla bilgi için bkz. Benzersiz Kısıtlamalar ve Kısıtlamaları Denetleme.

Sütun veya diğer ad veri türüne bağlı tek bir kural olabilir. Ancak, bir sütunda hem bir kural hem de onunla ilişkilendirilmiş bir veya daha fazla denetim kısıtlaması olabilir. Bu doğru olduğunda tüm kısıtlamalar değerlendirilir.

Transact-SQL söz dizimi kuralları

Sözdizimi

CREATE RULE [ schema_name . ] rule_name   
AS condition_expression  
[ ; ]  

Tartışmalar

schema_name
Kuralın ait olduğu şemanın adıdır.

rule_name
Yeni kuralın adıdır. Kural adları , tanımlayıcılar için kurallarla uyumlu olmalıdır. Kural sahibi adını belirtmek isteğe bağlıdır.

condition_expression
Kuralı tanımlayan koşul veya koşullardır. Kural, WHERE yan tümcesinde geçerli olan herhangi bir ifade olabilir ve aritmetik işleçler, ilişkisel işleçler ve koşul (örneğin, IN, LIKE, BETWEEN) gibi öğeleri içerebilir. Kural sütunlara veya diğer veritabanı nesnelerine başvuramaz. Veritabanı nesnelerine başvurmayan yerleşik işlevler eklenebilir. Kullanıcı tanımlı işlevler kullanılamaz.

condition_expression bir değişken içerir. at işareti (@) her yerel değişkenin önüne yer alır. İfade UPDATE veya INSERT deyimiyle girilen değere başvurur. Kural oluşturulurken değeri göstermek için herhangi bir ad veya simge kullanılabilir, ancak ilk karakter at işareti (@) olmalıdır.

Uyarı

Diğer ad veri türlerini kullanan ifadelerde kurallar oluşturmaktan kaçının. Diğer ad veri türlerini kullanan ifadelerde kurallar oluşturulasa da, kurallar sütunlara veya diğer ad veri türlerine bağlandıktan sonra, başvurulduğunda ifadeler derlenemez.

Açıklamalar

CREATE RULE, tek bir toplu işlemde diğer Transact-SQL deyimleriyle birleştirilemez. Kurallar, kurallar oluşturulduğu sırada veritabanında zaten var olan verilere uygulanmaz ve kurallar sistem veri türlerine bağlanamaz.

Kural yalnızca geçerli veritabanında oluşturulabilir. Kural oluşturduktan sonra, kuralı bir sütuna veya diğer ad veri türüne bağlamak için sp_bindrule yürütebilirsiniz. Kural, sütun veri türüyle uyumlu olmalıdır. Örneğin, "@value LIKE A%" sayısal sütun için kural olarak kullanılamaz. Kural bir metin, ntext, görüntü, varchar(max), nvarchar(max), varbinary(max), xml, CLR kullanıcı tanımlı tür veya zaman damgası sütununa bağlanamaz. Kural hesaplanan bir sütuna bağlanamaz.

Karakter ve tarih sabitlerini tek tırnak işaretleri (') içine alın ve ikili sabitlerden önce 0x ekleyin. Kural bağlı olduğu sütunla uyumlu değilse, SQL Server Veritabanı Altyapısı bir değer eklendiğinde bir hata iletisi döndürür, ancak kural bağlı olduğunda döndürmez.

Diğer ad veri türüne bağlı bir kural, yalnızca diğer ad veri türündeki bir veritabanı sütununa değer eklemeye veya bu sütunu güncelleştirmeye çalıştığınızda etkinleştirilir. Kurallar değişkenleri test etmediğinden, aynı veri türündeki bir sütuna bağlı bir kural tarafından reddedilecek bir diğer ad veri türü değişkenine değer atamayın.

Bir kuralla ilgili rapor almak için sp_help kullanın. Kuralın metnini görüntülemek için, parametre olarak kural adıyla sp_helptext yürütür. Kuralı yeniden adlandırmak için sp_rename kullanın.

Aynı ada sahip yeni bir kural oluşturulmadan önce DROP RULE kullanılarak bir kural bırakılmalıdır ve kural bırakılmadan önce sp_unbindrule kullanılarak ilişkisiz olmalıdır. Bir sütundaki kuralın bağlantısını kaldırmak için sp_unbindrule kullanın.

Öncekini bağlamadan yeni bir kuralı bir sütuna veya veri türüne bağlayabilirsiniz; yeni kural öncekini geçersiz kılar. Sütunlara bağlı kurallar her zaman diğer ad veri türlerine bağlı kurallardan önceliklidir. Bir kuralı sütuna bağlamak, o sütunun diğer ad veri türüne zaten bağlı olan bir kuralın yerini alır. Ancak bir kuralı veri türüne bağlamak, bu diğer ad veri türünün sütununa bağlı bir kuralın yerini almaz. Aşağıdaki tabloda, kurallar sütunlara ve kuralların zaten var olduğu diğer ad veri türlerine bağlı olduğunda geçerli olan öncelik gösterilmektedir.

Bağlı yeni kural Eski kurala bağlı

diğer ad veri türü
Eski kurala bağlı

Köşe yazısı
Diğer ad veri türü Eski kural değiştirildi Değişiklik yok
Köşe yazısı Eski kural değiştirildi Eski kural değiştirildi

Bir sütunda hem varsayılan hem de onunla ilişkilendirilmiş bir kural varsa, varsayılan değer kural tarafından tanımlanan etki alanı içinde olmalıdır. Bir kuralla çakişen varsayılan değer hiçbir zaman eklenmez. SQL Server Veritabanı Altyapısı, böyle bir varsayılanı her eklemeye çalıştığında bir hata iletisi oluşturur.

İzinler

CREATE RULE'ı yürütmek için, kullanıcının en azından geçerli veritabanında CREATE RULE iznine ve kuralın oluşturulduğu şemada ALTER iznine sahip olması gerekir.

Örnekler

A. Bir aralıkla kural oluşturma

Aşağıdaki örnek, bu kuralın bağlı olduğu sütuna veya sütunlara eklenen tamsayı aralığını kısıtlayan bir kural oluşturur.

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

B. Listeyle kural oluşturma

Aşağıdaki örnek, sütuna veya sütunlara girilen gerçek değerleri (bu kuralın bağlı olduğu) yalnızca kuralda listelenenlerle sınırlayan bir kural oluşturur.

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

C. Desenli kural oluşturma

Aşağıdaki örnek, iki karakterden oluşan bir deseni ve ardından kısa çizgi (- ), herhangi bir sayıda karakter veya karakter içermeyen ve içinden 0bir tamsayı 9 ile biten bir kural oluşturur.

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

Ayrıca Bkz.

ALTER TABLE (Transact-SQL)
VARSAYLANI OLUŞTUR (Transact-SQL)
TABLO OLUŞTUR (Transact-SQL)
DEFAULT DÜŞÜRME (Transact-SQL)
DROP KURALI (Transact-SQL)
İfadeleri (Transact-SQL)
sp_bindrule (Transact-SQL)
sp_help (Transact-SQL)
sp_helptext (Transact-SQL)
sp_rename (Transact-SQL)
sp_unbindrule (Transact-SQL)
BURADA (Transact-SQL)