Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
SQL-database in Microsoft Fabric
Bindt een regel aan een kolom of aan een alias-datatype.
Belangrijk
Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie. Gebruik unieke constraints en controleer in plaats daarvan constraints. CHECK-beperkingen worden gemaakt met het sleutelwoord CHECK van de CREATE TABLE- of ALTER TABLE-instructies .
Transact-SQL syntaxis-conventies
Syntaxis
sp_bindrule
[ @rulename = ] N'rulename'
, [ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
Arguments
[ @rulename = ] N'regelnaam'
De naam van een regel die door de CREATE RULE verklaring is gecreëerd.
@rulename is nvarchar(776), zonder standaard.
[ @objname = ] N'objname'
De tabel en kolom, of het alias-datatype waaraan de regel gebonden moet worden. @objname is nvarchar(776), zonder standaard.
Een regel kan niet worden gebonden aan een tekst-, ntext-, afbeelding-, varchar(max)-, nvarchar-(max)-, varbinary(max)-, xml-, CLR-door de gebruiker gedefinieerde type of tijdstempelkolom . Een regel kan niet aan een berekende kolom worden gebonden.
@objname is nvarchar(776) zonder standaard. Als @objname een naam uit één deel is, wordt het opgelost als een alias-datatype. Als het een twee- of driedelige naam is, wordt deze eerst opgelost als een tabel en kolom; als deze resolutie faalt, wordt deze opgelost als een alias-datatype. Standaard erven bestaande kolommen van het alias-datatype @rulename tenzij een regel direct aan de kolom is gebonden.
@objname kan de haakjes ([ en ]) tekens als gescheiden identificatietekens bevatten. Zie Database-id's voor meer informatie.
Regels die zijn gemaakt op expressies die alias-datatypes gebruiken, kunnen worden gebonden aan kolommen of alias-datatypes, maar kunnen niet compileren wanneer ze worden verwezen. Vermijd het gebruik van regels die zijn gemaakt op alias-datatypes.
[ @futureonly = ] 'alleen voor de toekomst'
Wordt alleen gebruikt bij het binden van een regel aan een aliasdatatype.
@futureonly is varchar(15), met een standaard van NULL. Deze parameter, wanneer ingesteld op futureonly, voorkomt dat bestaande kolommen van een alias-datatype de nieuwe regel erven. Als @futureonly is NULL, is de nieuwe regel gebonden aan kolommen van het aliasdatatype die momenteel geen regel hebben of die de bestaande regel van het aliasdatatype gebruiken.
Codewaarden retourneren
0 (geslaagd) of 1 (mislukt).
Opmerkingen
Je kunt een nieuwe regel binden aan een kolom (hoewel het gebruik van een CHECK constraint de voorkeur heeft) of aan een alias-datatype zonder sp_bindrule een bestaande regel te ontbinden. De oude regel wordt overruled. Als een regel gebonden is aan een kolom met een bestaande CHECK constraint, worden alle beperkingen geëvalueerd. Je kunt een regel niet binden aan een SQL Server-datatype.
De regel wordt gehandhaafd wanneer een INSERT verklaring wordt behandeld, niet bij bindende behandeling. Je kunt een tekenregel koppelen aan een kolom met numeriek datatype, hoewel zo'n INSERT bewerking niet geldig is.
Bestaande kolommen van het alias-datatype erven de nieuwe regel tenzij @futureonly is gespecificeerd als futureonly. Nieuwe kolommen die met het alias-datatype zijn gedefinieerd, erven altijd de regel. Als de ALTER COLUMN clausule van een ALTER TABLE statement echter het datatype van een kolom verandert in een alias-datatype dat aan een regel is gebonden, wordt de regel die aan het datatype is gebonden niet door de kolom geërfd. De regel moet specifiek aan de kolom worden gebonden door gebruik te maken van sp_bindrule.
Wanneer je een regel aan een kolom koppelt, wordt gerelateerde informatie aan de sys.columns tabel toegevoegd. Wanneer je een regel bindt aan een alias-datatype, wordt gerelateerde informatie aan de sys.types tabel toegevoegd.
Permissions
Om een regel aan een tabelkolom te koppelen, moet je toestemming hebben ALTER voor de tabel.
CONTROL Toestemming voor het Alias-datatype, of ALTER toestemming voor het schema waartoe het type behoort, is vereist om een regel aan een alias-datatype te binden.
Voorbeelden
Eén. Bind een regel aan een kolom
Aangenomen dat een regel met today naam in de huidige database wordt aangemaakt met behulp van de CREATE RULE instructie, bindt het volgende voorbeeld de regel aan de HireDate kolom van de Employee tabel. Wanneer een rij wordt toegevoegd aan Employee, wordt de data voor de HireDate kolom gecontroleerd tegen de today regel.
USE master;
GO
EXECUTE sp_bindrule 'today', 'HumanResources.Employee.HireDate';
B. Bind een regel aan een aliasdatatype
Uitgaande van het bestaan van een regel genaamd rule_ssn en een aliasdatatype genaamd ssn, bindt rule_ssn het volgende voorbeeld aan ssn. In een CREATE TABLE statement erven kolommen van type ssn de rule_ssn regel. Bestaande kolommen van type ssn erven de rule_ssn regel ook, tenzij futureonly voor @futureonly is gespecificeerd, of ssn een regel direct aan zich gebonden heeft. Regels die aan kolommen zijn gebonden, hebben altijd voorrang boven standaardregels die aan datatypes zijn gebonden.
USE master;
GO
EXECUTE sp_bindrule 'rule_ssn', 'ssn';
C.
futureonly De optie gebruiken
Het volgende voorbeeld bindt de rule_ssn regel aan het aliasdatatype ssn. Omdat futureonly is gespecificeerd, worden geen bestaande kolommen van het type ssn beïnvloed.
USE master;
GO
EXECUTE sp_bindrule rule_ssn, 'ssn', 'futureonly';
D. Gebruik gescheiden identificaties
Het volgende voorbeeld toont het gebruik van gescheiden identificaties in @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.