Udostępnij za pośrednictwem


CREATE RULE (Transact-SQL)

Tworzy obiekt o nazwie regułę.Kiedy związana z kolumną lub typem danych alias, reguła określa dopuszczalne wartości, które mogą być wstawiane do tej kolumna.

Important noteImportant Note:

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Firma Microsoft zaleca, aby zamiast tego użyj ograniczeń check.Sprawdź ograniczenia są tworzone przy użyciu słowa kluczowego wyboru CREATE tabela lub ALTER tabela.Aby uzyskać więcej informacji zobaczCHECK Constraints.

Typ danych kolumna lub alias może mieć tylko jedną regułę związany z nim.Jednak kolumna może mieć zarówno regułę i skojarzone z nim jeden lub więcej ograniczeń check.W takim przypadku, gdy wszystkie ograniczenia są oceniane.

Topic link iconKonwencje składni języka Transact-SQL

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

Argumenty

  • schema_name
    To nazwa schematu, do którego należy reguła.

  • rule_name
    To nazwa nowej reguły.Nazwy reguł muszą być zgodne z zasadami identyfikatory.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żeniem, które są dozwolone w klauzula WHERE i może zawierać elementy, takie jak operatory arytmetyczne i relacyjne operatory predykatów (na przykład IN, LIKE BETWEEN).Reguły nie może odwoływać się do kolumn lub innych obiektów bazy danych.funkcje wbudowane, które nie odwołania do obiektów bazy danych mogą być uwzględnione.Nie można użyć funkcji zdefiniowanych przez użytkownika.

    condition_expression zawiera jedną zmienną.Na podpisywanie ()@) poprzedza każdy zmiennej lokalnej.Wyrażenie odwołuje się do wartości wprowadzonej w instrukcja UPDATE lub INSERT.Dowolną nazwą lub symbol może służyć do przedstawiania wartości podczas tworzenia reguły, ale pierwszy znak musi być na podpisywanie ()@).

    Uwaga

    Należy unikać tworzenia reguł na podstawie wyrażeń, które korzystają z typów danych alias.Wprawdzie reguły można tworzyć na podstawie wyrażeń używających typów danych alias, jednak po powiązaniu reguł z kolumnami lub typami danych alias próba odwołania się i kompilacji wyrażenia zakończy się niepowodzeniem.

Remarks

Opcji CREATE RULE nie można łączyć z innymi instrukcjami Transact-SQL w jednej partii.Reguły nie są stosowane dla danych, które już istnieją w bazie danych w momencie tworzenia tych reguł, nie można również powiązać reguł z systemowymi typami danych.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 wykonaj procedurę składowaną sp_bindrule, aby powiązać regułę z kolumną lub typem danych alias.Reguła musi być zgodna z typem danych kolumny.Na przykład wyrażenie „@value LIKE A%” nie może być użyte jako reguła dla kolumny liczbowej.Reguła nie może być powiązana z kolumną typu text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, CLR zdefiniowanego przez użytkownika lub timestamp.Reguła nie może być powiązana z kolumną obliczaną.

Stałe znakowe i daty należy umieszczać w pojedynczych cudzysłowach ('), zaś stałe binarne poprzedzać znakami 0x.Jeśli reguła nie jest zgodna z kolumną, z którą jest powiązana, program SQL Server Database Engine zwraca komunikat o błędzie przy wstawianiu wartości, ale nie w momencie tworzenia powiązania reguły.

Widok można utworzyć dla osób odpowiedzialnych za o śledzeniu prac rocznice, ale bez tej osobie dostęp do wszystkich danych w tych tabelach.Za pomocą WITH szyfrowanie

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

Reguła musi być odrzucone, za pomocą DROP RULE przed tworzony jest nowy plik o tej samej nazwie, a reguła musi być byusing niezwiązanego sp_unbindrule , zanim zostanie odrzucone.Aby usunąć powiązania reguły z kolumna, należy użyć sp_unbindrule.

Nową regułę można powiązać z kolumną lub typem danych bez usuwania powiązania poprzedniej. Nowa reguła zastępuje wcześniejszą.Reguły powiązane z kolumnami zawsze maję pierwszeństwo przed regułami powiązanymi z typami danych alias.Powiązanie reguły z kolumną zastępuje regułę już powiązaną z typem danych alias tej kolumny.Jednak powiązanie reguły z typem danych nie zastępuje powiązania reguły z kolumną tego typu danych alias.W poniższej tabeli pokazano obowiązujące pierwszeństwo dla reguł powiązanych z kolumnami i typami danych alias, dla których już istnieją reguły.

W poniższej tabela opisano kolumny w widoku syspolicy_policies.

policy_id

Nazwa zasady.

policy_id

Kolumna

Alias typ danych

condition_id

Brak zmian

Kolumna

condition_id

condition_id

Identyfikator warunku wymuszone lub przetestowane przez tę zasadę.root_condition_idData i godzina utworzenia zasad.

Uprawnienia

execution_mode

Przykłady

A.Tryb oceny dla tych zasad.

Możliwe wartości są następujące:

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

B.0 = Na żądanie

W tym trybie przetwarza zasady, gdy określony bezpośrednio przez użytkownika.

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

C.Tworzenie reguły z wzorcem

Poniższy przykład tworzy regułę, zgodnie z określonym wzorcem, zajmującym dwa dowolne znaki następuje (łącznik-), dowolną liczbę znaków lub nie znaków i zakończenie z liczbą całkowitą z zakresu od 0 za pomocą 9.

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