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.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Elemzési platformrendszer (PDW)
SQL-adatbázis a Microsoft Fabricben
Létrehoz egy szabálynak nevezett objektumot. Ha oszlophoz vagy alias adattípushoz van kötve, a szabály meghatározza azokat az elfogadható értékeket, amelyeket be lehet szúrni az oszlopba.
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. Javasoljuk, hogy inkább ellenőrzési korlátozásokat használjon. Az ellenőrzési korlátozások a CREATE TABLE vagy ALTER TABLE CHECK kulcsszóval jönnek létre. További információ: Egyedi korlátozások és korlátozások ellenőrzése.
Egy oszlop vagy alias adattípushoz csak egy szabály lehet kötve. Az oszlopokhoz azonban egy szabály és egy vagy több ellenőrzési korlátozás is társítható. Ha ez igaz, a rendszer minden korlátozást kiértékel.
Transact-SQL szintaxis konvenciók
Szemantika
CREATE RULE [ schema_name . ] rule_name
AS condition_expression
[ ; ]
Érvek
schema_name
Annak a sémának a neve, amelyhez a szabály tartozik.
rule_name
Az új szabály neve. A szabályneveknek meg kell felelniük az azonosítók szabályainak. A szabály tulajdonosának nevének megadása nem kötelező.
condition_expression
A szabályt meghatározó feltétel vagy feltételek. A szabály bármely, a WHERE záradékban érvényes kifejezés lehet, és tartalmazhat olyan elemeket, mint aritmetikai operátorok, relációs operátorok és predikátumok (például IN, LIKE, BETWEEN). A szabály nem hivatkozhat oszlopokra vagy más adatbázis-objektumokra. Az adatbázis-objektumokra nem hivatkozó beépített függvények is belefoglalhatók. Felhasználó által definiált függvények nem használhatók.
condition_expression egy változót tartalmaz. Az at sign (@) előzi meg az egyes helyi változókat. A kifejezés az UPDATE vagy INSERT utasítással megadott értékre hivatkozik. A szabály létrehozásakor bármilyen név vagy szimbólum használható az érték ábrázolására, de az első karakternek a kezdőjelnek (@) kell lennie.
Megjegyzés:
Kerülje az alias adattípusokat használó kifejezésekre vonatkozó szabályok létrehozását. Bár az alias adattípusokat használó kifejezéseken szabályok hozhatók létre, a szabályok oszlopokhoz vagy alias adattípusokhoz való kötése után a kifejezések fordítása sikertelen lesz a hivatkozáskor.
Megjegyzések
A CREATE RULE nem kombinálható más Transact-SQL utasításokkal egyetlen kötegben. A szabályok nem vonatkoznak az adatbázisban már meglévő adatokra a szabályok létrehozásakor, és a szabályok nem köthetők a rendszer adattípusaihoz.
Szabály csak az aktuális adatbázisban hozható létre. Miután létrehozott egy szabályt, hajtsa végre a sp_bindrule , hogy a szabályt egy oszlophoz vagy alias adattípushoz kösse. Egy szabálynak kompatibilisnek kell lennie az oszlop adattípusával. A "@value LIKE A%" például nem használható számoszlop szabályaként. A szabály nem köthető szöveghez, ntexthez, képhez, varchar(max), nvarchar(max), varbinary(max), xml, CLR felhasználó által definiált típushoz vagy időbélyegoszlophoz . Egy szabály nem köthető számított oszlophoz.
A karakter- és dátumállandókat egyetlen idézőjel (') közé kell foglalni, és a bináris állandókat 0x előzi meg. Ha a szabály nem kompatibilis azzal az oszlopmal, amelyhez hozzá van kötve, az SQL Server adatbázismotor hibaüzenetet ad vissza egy érték beszúrásakor, de a szabály kötésekor nem.
Az alias adattípushoz kötött szabály csak akkor aktiválódik, ha egy értéket próbál beszúrni vagy frissíteni az alias adattípus adatbázisoszlopába. Mivel a szabályok nem tesztelik a változókat, ne rendeljen hozzá olyan értéket egy alias adattípus-változóhoz, amelyet egy azonos adattípusú oszlophoz kötött szabály elutasítana.
Ha jelentést szeretne kapni egy szabályról, használja a sp_help. Egy szabály szövegének megjelenítéséhez hajtsa végre a sp_helptext paraméterként a szabály nevével. Szabály átnevezéséhez használja a sp_rename.
Egy szabályt a DROP RULE használatával kell elvetni, mielőtt egy azonos nevű újat hoz létre, és a szabálynak kötetlennek kell lennie a sp_unbindrule használatával az elvetése előtt. Ha egy oszlopból szeretne szabályt leválasztani, használja a sp_unbindrule.
Új szabályt az előző kötése nélkül is köthet oszlophoz vagy adattípushoz; az új szabály felülírja az előzőt. Az oszlopokhoz kötött szabályok mindig elsőbbséget élveznek az alias-adattípusokhoz kötött szabályokkal szemben. A szabály oszlophoz kötése felülírja az adott oszlop alias-adattípusához kötött szabályt. A szabály adattípushoz kötése azonban nem helyettesíti az adott alias adattípus oszlopához kötött szabályt. Az alábbi táblázat azt mutatja be, hogy a szabályok oszlopokhoz és alias adattípusokhoz vannak kötve, amelyeken a szabályok már léteznek.
| Új szabály, amely a | Régi szabály, amely a alias adattípus |
Régi szabály, amely a oszlop |
|---|---|---|
| Alias adattípusa | Régi szabály lecserélve | Nincs változás |
| oszlop | Régi szabály lecserélve | Régi szabály lecserélve |
Ha egy oszlophoz tartozik alapértelmezett és egy szabály is, az alapértelmezett értéknek a szabály által meghatározott tartományba kell tartoznia. A rendszer soha nem szúr be olyan alapértelmezett értéket, amely ütközik egy szabmánnyal. Az SQL Server adatbázismotor minden alkalommal hibaüzenetet hoz létre, amikor ilyen alapértelmezett értéket próbál beszúrni.
Engedélyek
A CREATE RULE végrehajtásához a felhasználónak legalább CREATE RULE engedéllyel kell rendelkeznie az aktuális adatbázisban, és ALTER engedéllyel kell rendelkeznie azon a sémán, amelyben a szabály létrejön.
Példák
Egy. Szabály létrehozása tartománnyal
Az alábbi példa egy szabályt hoz létre, amely korlátozza a szabályhoz kötött oszlopba vagy oszlopokba beszúrt egész számok tartományát.
CREATE RULE range_rule
AS
@range>= $1000 AND @range <$20000;
B. Szabály létrehozása listával
Az alábbi példa egy olyan szabályt hoz létre, amely az oszlopba vagy oszlopokba beírt tényleges értékeket (amelyekhez ez a szabály kötött) csak a szabályban felsorolt értékekre korlátozza.
CREATE RULE list_rule
AS
@list IN ('1389', '0736', '0877');
C. Szabály létrehozása mintával
Az alábbi példa egy szabályt hoz létre, amely bármely két karakterből álló mintát követ, majd egy kötőjelet (-tetszőleges számú karaktert vagy karaktert) követ, és egy egész számmal 09 végződik.
CREATE RULE pattern_rule
AS
@value LIKE '__-%[0-9]'
Lásd még:
ALTERNATÍV TÁBLÁZAT (Transact-SQL)
CREATE DEFAULT (Transact-SQL)
CREATE TABLE (Transact-SQL)
DROP DEFAULT (Transact-SQL)
DOBÁS SZABÁLYA (Transact-SQL)
kifejezések (Transact-SQL)
sp_bindrule (Transact-SQL)
sp_help (Transact-SQL)
sp_helptext (Transact-SQL)
sp_rename (Transact-SQL)
sp_unbindrule (Transact-SQL)
AHOL (Transact-SQL)