Megosztás a következőn keresztül:


sp_bindrule (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseSQL 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.