Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Azure SQL Database
Azure SQL Managed Instance
Analytics Platform System (PDW)
Tworzy obiekt nazywany regułą. Po powiązaniu z kolumną lub aliasem typu danych reguła określa dopuszczalne wartości, które można wstawić do tej kolumny.
Ważne
Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zalecamy zamiast tego użycie ograniczeń sprawdzania. Ograniczenia sprawdzania są tworzone przy użyciu słowa kluczowego CHECK CREATE TABLE lub ALTER TABLE. Aby uzyskać więcej informacji, zobacz Unikatowe ograniczenia i Ograniczenia kontrolne.
Typ danych kolumny lub aliasu może mieć tylko jedną regułę powiązaną z nią. Jednak kolumna może mieć skojarzoną regułę i co najmniej jedno ograniczenie sprawdzania. Jeśli to prawda, zostaną ocenione wszystkie ograniczenia.
Transact-SQL konwencje składni
Składnia
CREATE RULE [ schema_name . ] rule_name
AS condition_expression
[ ; ]
Argumenty (w programowaniu)
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 regułami dotyczącymi identyfikatorów. Określanie nazwy właściciela reguły jest opcjonalne.
condition_expression
Czy warunek lub warunki definiują regułę. Reguła może być dowolnym wyrażeniem prawidłowym w klauzuli WHERE i może zawierać elementy, takie jak operatory arytmetyczne, operatory relacyjne i predykaty (na przykład IN, LIKE, BETWEEN). Reguła nie może odwoływać się do kolumn ani innych obiektów bazy danych. Wbudowane funkcje, które nie odwołują się do obiektów bazy danych, można uwzględnić. Nie można używać funkcji zdefiniowanych przez użytkownika.
condition_expression zawiera jedną zmienną. Znak at (@) poprzedza każdą zmienną lokalną. Wyrażenie odwołuje się do wartości wprowadzonej za pomocą instrukcji UPDATE lub INSERT. Dowolna nazwa lub symbol może służyć do reprezentowania wartości podczas tworzenia reguły, ale pierwszy znak musi być znakiem (@).
Uwaga / Notatka
Unikaj tworzenia reguł w wyrażeniach używających typów danych aliasu. Mimo że reguły można tworzyć w wyrażeniach używających typów danych aliasu, po powiązaniu reguł z kolumnami lub typami danych aliasu wyrażenia nie będą kompilowane podczas odwoływania się.
Uwagi
Nie można połączyć reguły CREATE z innymi instrukcjami Transact-SQL w jednej partii. Reguły nie mają zastosowania do danych już istniejących w bazie danych w czasie tworzenia reguł, a reguły nie mogą być powiązane z systemowymi typami danych.
Regułę można utworzyć tylko w bieżącej bazie danych. Po utworzeniu reguły wykonaj sp_bindrule , aby powiązać regułę z kolumną lub z typem danych aliasu. Reguła musi być zgodna z typem danych kolumny. Na przykład "@value LIKE A%" nie można użyć jako reguły dla kolumny liczbowej. Reguła nie może być powiązana z tekstem, ntextem, obrazem, varchar(max), nvarchar(max), varbinary(max), xml, typem zdefiniowanym przez użytkownika CLR lub kolumną znacznika czasu . Nie można powiązać reguły z obliczoną kolumną.
Ujęć znaki i stałe daty z pojedynczymi cudzysłowami (') i poprzedzać stałe binarne o wartości 0x. Jeśli reguła nie jest zgodna z kolumną, z którą jest powiązana, aparat bazy danych programu SQL Server zwraca komunikat o błędzie po wstawieniu wartości, ale nie wtedy, gdy reguła jest powiązana.
Reguła powiązana z typem danych aliasu jest aktywowana tylko wtedy, gdy próbujesz wstawić wartość do lub zaktualizować kolumnę bazy danych typu danych aliasu. Ponieważ reguły nie testują zmiennych, nie przypisuj wartości do zmiennej typu danych aliasu, która zostanie odrzucona przez regułę powiązaną z kolumną tego samego typu danych.
Aby uzyskać raport dotyczący reguły, użyj sp_help. Aby wyświetlić tekst reguły, wykonaj sp_helptext z nazwą reguły jako parametrem. Aby zmienić nazwę reguły, użyj sp_rename.
Przed utworzeniem nowej reguły o tej samej nazwie należy usunąć regułę przy użyciu reguły DROP, a reguła musi być niezwiązana przy użyciu sp_unbindrule , zanim zostanie porzucona. Aby usunąć powiązanie reguły z kolumny, użyj sp_unbindrule.
Nową regułę można powiązać z kolumną lub typem danych bez powiązania poprzedniego; nowa reguła zastępuje poprzednią regułę. Reguły powiązane z kolumnami mają zawsze pierwszeństwo przed regułami powiązanymi z typami danych aliasu. Powiązanie reguły z kolumną zastępuje regułę już powiązaną z typem danych aliasu tej kolumny. Jednak powiązanie reguły z typem danych nie zastępuje reguły powiązanej z kolumną tego typu danych aliasu. W poniższej tabeli przedstawiono pierwszeństwo, gdy reguły są powiązane z kolumnami i do typów danych aliasów, na których już istnieją reguły.
Nowa reguła powiązana z | Stara reguła powiązana z typ danych aliasu |
Stara reguła powiązana z Kolumna |
---|---|---|
Typ danych aliasu | Stara reguła została zastąpiona | Bez zmian |
Kolumna | Stara reguła została zastąpiona | Stara reguła została zastąpiona |
Jeśli kolumna ma skojarzona zarówno domyślną, jak i regułę, wartość domyślna musi należeć do domeny zdefiniowanej przez regułę. Wartość domyślna, która powoduje konflikt z regułą, nigdy nie jest wstawiana. Aparat bazy danych programu SQL Server generuje komunikat o błędzie za każdym razem, gdy próbuje wstawić taką wartość domyślną.
Uprawnienia
Aby wykonać regułę CREATE, co najmniej użytkownik musi mieć uprawnienie CREATE RULE w bieżącej bazie danych i uprawnienia ALTER w schemacie, w którym jest tworzona reguła.
Przykłady
Odp. Tworzenie reguły z zakresem
Poniższy przykład tworzy regułę, która ogranicza zakres liczb całkowitych wstawionych do kolumny lub kolumn, do których ta reguła jest powiązana.
CREATE RULE range_rule
AS
@range>= $1000 AND @range <$20000;
B. Tworzenie reguły z listą
Poniższy przykład tworzy regułę, która ogranicza rzeczywiste wartości wprowadzone w kolumnie lub kolumnach (do których ta reguła jest powiązana) tylko z tymi wymienionymi w regule.
CREATE RULE list_rule
AS
@list IN ('1389', '0736', '0877');
C. Tworzenie reguły z wzorcem
Poniższy przykład tworzy regułę, aby postępować zgodnie ze wzorcem dowolnych dwóch znaków, a następnie łącznikiem (-
), dowolną liczbą znaków lub bez znaków, a kończąc na liczbie całkowitej od 0
do .9
CREATE RULE pattern_rule
AS
@value LIKE '__-%[0-9]'
Zobacz też
ALTER TABLE (Transact-SQL)
CREATE DEFAULT (Transact-SQL)
CREATE TABLE (Transact-SQL)
DROP DEFAULT (Transact-SQL)
DROP RULE (Transact-SQL)
Wyrażenia (Transact-SQL)
sp_bindrule (Transact-SQL)
sp_help (Transact-SQL)
sp_helptext (Transact-SQL)
sp_rename (Transact-SQL)
sp_unbindrule (Transact-SQL)
WHERE (Transact-SQL)