Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do:SQL Server
Azure SQL Database
Baza danych SQL w Microsoft Fabric
Przypisuje regułę do kolumny lub typu danych alias.
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. Używaj unikalnych ograniczeń i sprawdź ograniczenia zamiast tego. Ograniczenia CHECK są tworzone za pomocą słowa kluczowego CHECK w instrukcjach CREATE TABLE lub ALTER TABLE .
Transact-SQL konwencje składni
Składnia
sp_bindrule
[ @rulename = ] N'rulename'
, [ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
Arguments
[ @rulename = ] N'nazwa reguły'
Nazwa reguły utworzonej przez CREATE RULE to zdanie.
@rulename to nvarchar(776), bez domyślnego stanowczości.
[ @objname = ] N'objname'
Tabela i kolumna, czyli typ danych alias, do którego reguła ma być powiązana. @objname to nvarchar(776), bez domyślnego zachowania.
Reguła nie może być przypisana do tekstu, ntextu, obrazu, varchar(max),nvarchar(max),varbinary(max),xml, typu użytkownika CLR ani kolumny z znacznikiem czasu . Reguły nie można przypisać do obliczonej kolumny.
@objname to nvarchar(776) bez domyślnego wypadku. Jeśli @objname jest jednoczęściową nazwą, rozstrzyga się jako typ danych alias. Jeśli nazwa jest dwu- lub trzyczęściowa, najpierw rozstrzyga się jako tabela i kolumna; jeśli to rozwiązanie nie zadziała, rozwiązuje się jako typ danych alias. Domyślnie istniejące kolumny typu danych aliasu dziedziczą @rulename , chyba że reguła jest bezpośrednio powiązana z kolumną.
@objname może zawierać znaki nawiasowe ([ i ]) jako znaki identyfikatora oddzielone. Aby uzyskać więcej informacji, zobacz Identyfikatory bazy danych.
Reguły utworzone na wyrażeniach wykorzystujących typy danych aliasów mogą być powiązane z kolumnami lub typami danych alias, ale nie kompilują się po odwołaniu. Unikaj używania reguł utworzonych na typach danych alias.
[ @futureonly = ] 'tylko na przyszłość'
Używany tylko przy powiązaniu reguły z typem danych alias.
@futureonly to varchar(15), z domyślnym .NULL Ten parametr, ustawiony na futureonly, zapobiega dziedziczeniu nowej reguły przez istniejące kolumny typu alias. Jeśli @futureonly jest , NULLnowa reguła jest przypisana do wszystkich kolumn typu danych alias, które obecnie nie mają reguły lub korzystają z istniejącej reguły tego typu danych.
Zwracanie wartości kodu
0 (powodzenie) lub 1 (niepowodzenie).
Uwagi
Możesz przypisać nową regułę kolumnie (choć preferowane jest użycie ograniczenia CHECK ) lub typu danych aliasu bez sp_bindrule odwiązywania istniejącej reguły. Stara zasada została zniesiona. Jeśli reguła jest przypisana kolumnie z istniejącym ograniczeniem CHECK , wszystkie ograniczenia są oceniane. Nie da się powiązać reguły z typem danych SQL Server.
Reguła jest egzekwowana podczas INSERT próby zdania, a nie podczas wiążącej. Możesz przypisać regułę znaku kolumnie typu danych numerycznych , choć taka operacja INSERT nie jest poprawna.
Istniejące kolumny typu danych aliasu dziedziczą nową regułę, chyba że @futureonly jest określone jako futureonly. Nowe kolumny zdefiniowane z typem danych aliasu zawsze dziedziczą tę regułę. Jednak jeśli klauzula ALTER COLUMNALTER TABLE instrukcji zmienia typ danych kolumny na alias typ danych powiązany z regułą, reguła powiązana z tym typem danych nie jest dziedziczona przez kolumnę. Reguła musi być ściśle powiązana z kolumną, używając sp_bindrule.
Gdy przypisujesz regułę do kolumny, do tabeli sys.columns dodane są powiązane informacje. Gdy przypisujesz regułę do typu danych alias, do tabeli sys.types dodaje się powiązane informacje.
Permissions
Aby przypisać regułę kolumnie tabeli, musisz mieć ALTER pozwolenie na tę tabelę.
CONTROL Wymagane jest zezwolenie na typ danych aliasu lub ALTER na schemat, do którego należy ten typ, aby powiązać regułę z typem danych alias.
Przykłady
A. Przypisz regułę do kolumny
Zakładając, że nazwana reguła today została utworzona w aktualnej bazie danych za pomocą CREATE RULE tego zalecenia, poniższy przykład wiąże regułę z kolumną HireDate tabeli Employee . Gdy wiersz zostanie dodany do Employee, dane dla kolumny HireDate są sprawdzane względem reguły today .
USE master;
GO
EXECUTE sp_bindrule 'today', 'HumanResources.Employee.HireDate';
B. Przypisanie reguły do typu danych aliasu
Zakładając istnienie reguły o nazwie rule_ssn oraz typu danych aliasu o nazwie ssn, poniższy przykład wiąże rule_ssn się z .ssn W CREATE TABLE instrukcji kolumny typu ssn dziedziczą regułę rule_ssn . Istniejące kolumny typu ssn również dziedziczą regułęrule_ssn, chyba że dla @futureonly jest określone futureonly lub ssn ma regułę bezpośrednio z nią powiązaną. Reguły powiązane z kolumnami zawsze mają pierwszeństwo przed domyślnymi powiązanymi z typami danych.
USE master;
GO
EXECUTE sp_bindrule 'rule_ssn', 'ssn';
C.
futureonly Użyj opcji
Poniższy przykład wiąże regułę rule_ssn z typem ssndanych aliasu . Ponieważ futureonly jest określona, żadne istniejące kolumny typu ssn nie są dotknięte.
USE master;
GO
EXECUTE sp_bindrule rule_ssn, 'ssn', 'futureonly';
D. Używaj identyfikatorów ograniczonych
Poniższy przykład pokazuje użycie identyfikatorów oznaczonych w parametrze @objname .
USE master;
GO
CREATE TABLE [t.2] (c1 INT);
-- Notice the period as part of the table name.
EXECUTE sp_bindrule rule1, '[t.2].c1';
-- The object contains two periods;
-- the first is part of the table name
-- and the second distinguishes the table name from the column name.
Treści powiązane
- System procedur składowanych (Transact-SQL)
- procedury składowane aparatu bazy danych (Transact-SQL)
- REGUŁA CREATE (Transact-SQL)
- ZASADA UPUSZCZANIA (Transact-SQL)
- sp_unbindrule (Transact-SQL)