Tworzenie reguły języka Transact-SQL)

Tworzy obiekt o nazwie reguły.Powiązany z kolumna lub typ danych alias , reguła określa dopuszczalne wartości, które mogą być wstawiane do tej kolumna.

Ważna informacjaWażne:

Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.Zaleca się, aby użyć ograniczeń check.Ograniczenia CHECK są tworzone przy użyciu słowa kluczowego wyboru instrukcji ALTER TABLE lub CREATE TABLE.Aby uzyskać więcej informacji, zobacz Ograniczenia CHECK.

Typ danych kolumna lub alias może mieć tylko jedną regułę z nimi powiązać.Jednak kolumna może mieć reguły i ograniczenia check skojarzony z nim.To PRAWDA, oceniane są wszystkie ograniczenia.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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

Argumenty

  • schema_name
    Jest to nazwa schematu, do której należy dana reguła.

  • rule_name
    Jest to nazwa nowej reguły.Nazwy reguł muszą być zgodne z zasadami identyfikatorów.Określanie nazwy właściciela reguły jest opcjonalne.

  • condition_expression
    Jest to warunek lub warunki, które definiują reguły.Reguła może być dowolnym wyrażenie ważne w klauzula WHERE i może zawierać elementy, takie jak operatory arytmetyczne i relacyjne operatory predykatów (na przykład W, takich jak BETWEEN).Reguła nie może odwoływać się do kolumn lub inne obiekty bazy danych.Wbudowane funkcje, które odwołuje się do obiektów bazy danych może zostać dołączony.Nie można używać funkcji zdefiniowanej przez użytkownika.

    condition_expressionzawiera jedną zmienną.Znak (@) poprzedza każdy zmiennej lokalnej.wyrażenie odwołuje się do wartości wprowadzonej instrukcjaINSERT lub UPDATE.Jakakolwiek nazwa lub symbol może służyć do reprezentowania wartości podczas tworzenia reguły, ale pierwszy znak musi być znakiem (@).

    Ostrzeżenie

    Należy unikać tworzenia reguł na wyrażenia korzystające z typami danych alias .Chociaż reguły mogą być tworzone na wyrażeń wykorzystujących typy danych alias po powiązanie reguł do kolumn lub typów danych alias , wyrażenia nie można skompilować w przypadku odwołania do.

Uwagi

Tworzenie reguły nie można łączyć z innymi Transact-SQL instrukcji w jednej partia.Zasady nie mają zastosowania do danych już istniejących w bazie danych w czas utworzone zasady i reguły nie może być powiązane z typami danych systemu.Aby uzyskać więcej informacji, zobacz Typy danych (aparat bazy danych).

Regułę można utworzyć tylko w bieżącej bazie danych.Po utworzeniu reguły, wykonać sp_bindrule powiązać reguły kolumna lub typ danych alias .Reguła musi być zgodny z typem danych kolumna .Na przykład "@ wartość %" nie można używać jako regułę dla kolumnaliczbowej.A rule cannot be bound to a text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, zdefiniowany przez użytkownika typ CLR, or timestamp kolumna.Reguła nie może być powiązane kolumnaobliczanej.

Należy umieścić znak i data stałych w pojedynczy cudzysłów (') i poprzedzić binarne stałych 0 x.Jeśli reguła nie jest zgodny z kolumna , z którym jest związane, Aparat baz danych programu SQL Server zwraca komunikat o błędzie podczas wstawiania wartości, ale nie wtedy, gdy reguła jest związany.

Reguły związane z typem danych alias jest aktywowany tylko wtedy, gdy próby wstawienia wartości do lub aktualizacja bazy danych kolumna o typie danych alias .Ponieważ reguły nie Testuj zmiennych, nie należy przypisywać wartości do zmiennej typu danych alias , który będzie odrzucony przez regułę, która jest związana z kolumna typu danych.

Aby uzyskać raport na regułę, należy sp_help.Aby wyświetlić tekst reguły wykonać sp_helptext o nazwie reguły jako parametr.Aby zmienić nazwę reguły, należy użyć sp_rename.

Reguła musi porzucone przy użyciu reguły UPUŚĆ przed tworzony jest nowy plik o tej samej nazwie i reguły muszą być niezwiązany byusing sp_unbindrule zanim zostanie odrzucone.Usunięcia powiązania reguły z kolumna, należy użyć sp_unbindrule.

Nową regułę można powiązać typu danych kolumna lub bez Rozpinanie poprzedniego; Nowa reguła zastępuje poprzednie.Reguły związane z kolumn zawsze mają pierwszeństwo przed reguły powiązane z typami danych alias .Powiązanie z reguły do kolumna zastępuje reguły już powiązany z alias typ danych kolumna.Ale powiązanie regułę do typu danych nie zastępuje reguła związana z kolumna typ danych tego alias .W poniższej tabela przedstawiono pierwszeństwo obowiązują, gdy zasady są powiązane z kolumn i typy danych alias , na których istnieją reguły.

Nowa reguła powiązane

Stare reguły powiązane

alias , typ danych

Stare reguły powiązane

Column

Alias typ danych

Stare reguły zastąpione

Żadna zmiana

Column

Stare reguły zastąpione

Stare reguły zastąpione

Jeśli kolumna ma domyślnie i reguły skojarzone z nim, domyślnie muszą mieścić się w domena zdefiniowana przez regułęDomyślnie powoduje konflikt z regułą nigdy nie zostanie wstawiony.Aparat bazy danych SQL Server generuje komunikat o błędzie za każdym czas spróbuje wstawić wartość domyślną.

Uprawnienia

wykonać Utwórz REGUŁĘ, jako minimum użytkownik musi mieć uprawnienia Utwórz REGUŁĘ w bieżącej bazie danych i ZMIEŃ na schemacie, w którym tworzona jest reguła.

Przykłady

A.Tworzenie reguły z zakres

Poniższy przykład tworzy reguły, która ogranicza zakres liczb całkowitych wstawiona do kolumna lub kolumn, do których ta reguła jest powiązany.

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

B.Tworzenie reguły z listy

Poniższy przykład tworzy regułę, która ogranicza rzeczywistej wartości wprowadzanych w kolumna lub kolumn (które ta reguła jest powiązany) tylko te wymienione w regule.

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

C.Tworzenie reguły wzorkiem

Poniższy przykład tworzy regułę wykonaj deseń dwa dowolne znaki potem myślnik (-), wszelkie liczby znaków lub nie znaków i kończąc całkowitą z zakresu od 0 przez 9.

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