Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
SQL adatbázis a Microsoft Fabric-ben
Szabályt köt egy oszlopra vagy alias adattípusra.
Fontos
Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását. Használj Egyedi korlátokat és ellenőrizd helyette a korlátokat. A CHECK korlátozásokat a CREATE TABLE vagy ALTER TABLE utasítások CHECK kulcsszavajának használatával hozzuk létre.
Transact-SQL szintaxis konvenciók
Szemantika
sp_bindrule
[ @rulename = ] N'rulename'
, [ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
Arguments
[ @rulename = ] N'rulename'
Az állítás által létrehozott CREATE RULE szabály neve.
@rulenamenvarchar(776), alapértelmezett nélkül.
[ @objname = ] N'objname'
A táblázat és oszlop, vagy az az alias adattípus, amelyhez a szabályt kötni kell. @objnamenvarchar(776), alapértelmezett nélkül.
Egy szabály nem köthető szöveghez, ntexthez, image-hez, varchar(max), nvarchar(max),varbinary(max),xml-hez, CLR felhasználó által definiált típushoz vagy timestamp oszlophoz. Egy szabály nem köthető egy számított oszlophoz.
@objnamenvarchar(776) alapértelmezett nélkül. Ha @objname egyrészes név, akkor alias adattípusként oldódik meg. Ha két- vagy háromrészes név, először táblázatként és oszlopként jelenik meg; ha ez a felbontás nem működik, alias adattípusként oldódik meg. Alapértelmezés szerint az alias adattípus meglévő oszlopai @rulename örökölnek, hacsak egy szabály közvetlenül az oszlophoz van kötve.
@objname tartalmazhatják a zárójel ([ és ]) karaktereket departált azonosító karakterként. További információ: Adatbázis-azonosítók.
Az alias adattípusokat használó kifejezéseken létrehozott szabályok oszlopokhoz vagy alias adattípusokhoz köthetők, de nem fordítanak le, amikor hivatkoznak rájuk. Kerüld az alias adattípusokon létrehozott szabályok használatát.
[ @futureonly = ] 'csak jövőben'
Csak akkor használják, amikor egy szabályt alias adattípushoz kötnek.
@futureonlya varchar(15), alapértelmezett értéke NULL. Ez a paraméter, ha beállítva , futureonlymegakadályozza, hogy az alias adattípus meglévő oszlopai örököljék az új szabályt. Ha @futureonly , NULLaz új szabály az alias adattípus bármely oszlopához van kötve, amelyekben jelenleg nincs szabály, vagy amelyek az alias adattípus meglévő szabályát használják.
Kódértékek visszaadása
0 (sikeres) vagy 1 (hiba).
Megjegyzések
Egy új szabályt köthetsz egy oszlophoz (bár a CHECK korlátozás használata előnyösebb), vagy alias adattípushoz anélkül sp_bindrule , hogy egy meglévő szabályt nem bonnál. A régi szabályt felülírták. Ha egy szabály egy meglévő korlátozással rendelkező oszlophoz CHECK van kötve, minden korlátozást értékelnek. Nem lehet egy szabályt SQL Server adattípushoz kötni.
A szabályt akkor érvénybetartják, amikor egy INSERT állítást próbálnak ki, nem kötéskor is. Egy karakterszabályt köthetsz egy numerikus adattípusú oszlophoz, bár ez INSERT a művelet nem érvényes.
Az alias adattípus meglévő oszlopai öröklik az új szabályt, kivéve, ha @futureonly úgy van megadva.futureonly Az alias adattípussal definiált új oszlopok mindig öröklik a szabályt. Azonban, ha egy ALTER COLUMNALTER TABLE állítás záradéka megváltoztatja egy oszlop adattípusát egy szabályhoz kötött alias adattípusra, akkor az adattípushoz kötött szabály nem öröklik az oszlop. A szabályt kifejezetten az oszlophoz kell kötni .sp_bindrule
Amikor egy szabályt egy oszlophoz kötünk, kapcsolódó információk kerülnek hozzá a sys.columns táblához. Amikor egy szabályt kötsz egy alias adattípushoz, a sys.types kapcsolódó információk hozzáadódnak a táblához.
Permissions
Ahhoz, hogy egy szabályt egy táblázatoszlophoz kössön, engedélynek ALTER kell lennie a táblán.
CONTROL A szabály alias adattípushoz kötéséhez engedély szükséges az alias adattípusra, vagy ALTER a sémára, amelyhez a típus tartozik.
Példák
A. Kötözz egy szabályt egy oszlophoz
Feltételezve, hogy a jelenlegi adatbázisban CREATE RULE a megadott utasítás segítségével létrehoznak egy nevet today nevű szabályt, a következő példa a szabályt HireDate a tábla oszlopához Employee köti. Amikor egy sort hozzáadunk , Employeeaz oszlop adatait HireDate a szabály ellen ellenőrzik today .
USE master;
GO
EXECUTE sp_bindrule 'today', 'HumanResources.Employee.HireDate';
B. Bind egy rule alias adattípusra
Feltételezve, hogy létezik egy nevű rule_ssn szabály és egy alias adattípus, amelynek nevezi ssn, a következő példa rule_ssn kötődik .ssn Egy CREATE TABLE állításban a típus ssn oszlopai öröklik a rule_ssn szabályt. A meglévő típusú ssn oszlopok is öröklik a rule_ssn szabályt, kivéve, ha a futureonly@futureonly-re van megadva, vagy ssn közvetlenül hozzá van kötve egy szabály. Az oszlopokhoz kötött szabályok mindig elsőbbséget élveznek az adattípusokhoz kötött alapértelmezett szabályok felett.
USE master;
GO
EXECUTE sp_bindrule 'rule_ssn', 'ssn';
C. Használd az futureonly opciót
A következő példa köti a rule_ssn szabályt az alias adattípushoz ssn. Mivel futureonly a megadott állapotban nincs meglévő oszlop ssn érintett.
USE master;
GO
EXECUTE sp_bindrule rule_ssn, 'ssn', 'futureonly';
D. Használjon definiált azonosítókat
Az alábbi példa bemutatja a delimitált azonosítók használatát @objname paraméterben.
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.