Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
SQL-databas i Microsoft Fabric
Binder en regel till en kolumn eller till en aliasdatatyp.
Viktigt!
Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Använd unika begränsningar och kontrollera begränsningar istället. CHECK-begränsningar skapas genom att använda nyckelordet CHECK i CREATE TABLE- eller ALTER TABLE-satserna .
Transact-SQL syntaxkonventioner
Syntax
sp_bindrule
[ @rulename = ] N'rulename'
, [ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
Arguments
[ @rulename = ] N'regelnamn'
Namnet på en regel som skapas av uttalandet CREATE RULE .
@rulename är nvarchar(776), utan standard.
[ @objname = ] N'objname'
Tabellen och kolumnen, eller aliasdatatypen som regeln ska bindas till. @objname är nvarchar(776), utan standard.
En regel kan inte bindas till en text-, ntext-, bild-, varchar(max)-, nvarchar-(max)-, varbinär-(max)-, xml-, CLR-användardefinierad typ eller tidsstämpelkolumn . En regel kan inte bindas till en beräknad kolumn.
@objname är nvarchar(776) utan default. Om @objname är ett endelat namn, löses det som en aliasdatatyp. Om det är ett två- eller tredelat namn löses det först som en tabell och kolumn; om denna lösning misslyckas löses den som en aliasdatatyp. Som standard ärver befintliga kolumner av alias-datatypen @rulename om inte en regel är direkt bunden till kolumnen.
@objname kan innehålla parentestecknen ([ och ]) som avgränsade identifieringstecken. Mer information finns i Databasidentifierare.
Regler skapade på uttryck som använder aliasdatatyper kan bindas till kolumner eller aliasdatatyper, men kan inte kompileras när de refereras. Undvik att använda regler skapade på aliasdatatyper.
[ @futureonly = ] 'endast framtid'
Används endast när en regel binds till en alias-datatyp.
@futureonly är varchar(15), med standardvärdet .NULL Denna parameter, när den sätts till futureonly, förhindrar att befintliga kolumner av en alias-datatyp ärver den nya regeln. Om @futureonly är NULL, är den nya regeln bunden till alla kolumner av aliasdatatypen som för närvarande saknar regel eller som använder den befintliga regeln för aliasdatatypen.
Returnera kodvärden
0 (lyckades) eller 1 (fel).
Anmärkningar
Du kan binda en ny regel till en kolumn (även om användning av en CHECK begränsning är att föredra) eller till en aliasdatatyp utan sp_bindrule att avbinda en befintlig regel. Den gamla regeln åsidosätts. Om en regel är bunden till en kolumn med en befintlig CHECK begränsning, utvärderas alla begränsningar. Du kan inte binda en regel till en SQL Server-datatyp.
Regeln tillämpas när ett INSERT uttalande prövas, inte vid bindning. Du kan binda en teckenregel till en kolumn med numerisk datatyp, även om en INSERT sådan operation inte är giltig.
Befintliga kolumner av aliasdatatypen ärver den nya regeln om inte @futureonly anges som futureonly. Nya kolumner definierade med aliasdatatypen ärver alltid regeln. Men om klausulen ALTER COLUMN i en ALTER TABLE sats ändrar datatypen för en kolumn till en alias-datatyp bunden till en regel, ärvs inte regeln som är bunden till datatypen av kolumnen. Regeln måste vara specifikt bunden till kolumnen genom att använda sp_bindrule.
När du binder en regel till en kolumn läggs relaterad information till i tabellen sys.columns . När du binder en regel till en alias-datatyp läggs relaterad information till tabellen sys.types .
Permissions
För att binda en regel till en tabellkolumn måste du ha ALTER behörighet på tabellen.
CONTROL Behörighet på Alias-datatypen, eller ALTER behörighet på schemat som typen tillhör, krävs för att binda en regel till en Alias-datatyp.
Examples
A. Bind en regel till en kolumn
Om vi antar att en regel med namn today skapas i den aktuella databasen genom att använda satsen CREATE RULE , binder följande exempel regeln till kolumnen HireDate i tabellen Employee . När en rad läggs till i Employee, kontrolleras data för kolumnen HireDate mot regeln today .
USE master;
GO
EXECUTE sp_bindrule 'today', 'HumanResources.Employee.HireDate';
B. Bind en regel till en alias-datatyp
Under antagandet att det finns en regel med namnet rule_ssn och en alias-datatyp med namnet ssn, binder rule_ssn följande exempel till ssn. I en CREATE TABLE sats ärver kolumner av typen ssn regeln rule_ssn . Befintliga kolumner av typen ssn ärver också regeln rule_ssn , om inte futureonly anges för @futureonly, eller ssn har en regel direkt bunden till sig. Regler som är bundna till kolumner har alltid företräde framför standardregler som är bundna till datatyper.
USE master;
GO
EXECUTE sp_bindrule 'rule_ssn', 'ssn';
C. Använd alternativet futureonly
Följande exempel binder regeln rule_ssn till aliasdatatypen ssn. Eftersom futureonly är specificerat påverkas inga befintliga kolumner av typ ssn .
USE master;
GO
EXECUTE sp_bindrule rule_ssn, 'ssn', 'futureonly';
D. Använd avgränsade identifierare
Följande exempel visar användningen av avgränsade identifierare i @objname parameter.
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.