Om gegevens in te voegen in een tabel met kolommen met standaardbeperkingen, kunnen we de DEFAULT-beperking gebruiken voor een standaardwaarde in een tabel. Dit artikel behandelt de volgende aspecten:
- De DEFAULT-beperking en vereiste toestemming om ze te maken.
- Een DEFAULT-beperking toevoegen tijdens het maken van een nieuwe tabel.
- Een DEFAULT-beperking toevoegen aan een bestaande tabel.
- De beperkingsdefinitie wijzigen en bekijken met behulp van T-SQL-scripts en SSMS.
Wat is DEFAULT CONSTRAINT in SQL Server?
Een standaardbeperking specificeert de standaardwaarde voor de kolom.
Wanneer we de INSERT-instructie uitvoeren maar geen waarde opgeven voor de kolom met de gemaakte standaardbeperking, voegt SQL Server de standaardwaarde in die is opgegeven in de DEFAULT-beperkingsdefinitie.
Om een standaardbeperking te maken, hebt u de machtigingen ALTER TABLE en CREATE TABLE nodig.
Een DEFAULT-beperking toevoegen tijdens het maken van een nieuwe tabel
Er is een tabel met de naam SalesDetails . Wanneer we gegevens in de tabel invoegen zonder de Sale_Qty . op te geven kolomwaarde, moet de query nul invoegen. Om dat te doen, maak ik een standaardbeperking met de naam DF_SalesDetails_SaleQty op de Sale_Qty kolom.
USE demodatabase
go
CREATE TABLE salesdetails
(
id INT IDENTITY (1, 1),
product_code VARCHAR(10),
sale_qty INT CONSTRAINT df_salesdetails_saleqty DEFAULT 0
)
Laten we nu het beperkingsgedrag testen door er enkele dummy-records in te voegen. Voer de volgende vraag uit:
INSERT INTO salesdetails
(product_code)
VALUES ('PROD0001')
Gebruik de volgende query om gegevens uit de tabel te bekijken:
INSERT INTO salesdetails
(product_code)
VALUES ('PROD0001')
Uitvoer
Zoals je kunt zien, is de nul is ingevoegd in de Sale_Qty kolom.
Bij het maken van een tabel specificeren we niet de naam van de DEFAULT-beperking. SQL Server creëert een beperking met een door het systeem gegenereerde unieke naam.
Maak de tabel met behulp van de onderstaande query:
USE demodatabase
go
CREATE TABLE salesdetails
(
id INT IDENTITY (1, 1),
product_code VARCHAR(10),
sale_qty INT DEFAULT 0
)
Voer het volgende script uit om de naam van de beperking te bekijken:
SELECT NAME [Constraint name],
parent_object_id [Table Name],
type_desc [Object Type],
definition [Constraint Definition]
FROM sys.default_constraints
Uitvoer
SQL Server heeft een beperking gemaakt met de door het systeem gegenereerde naam.
Een DEFAULT-beperking toevoegen aan een bestaande tabel
Om een beperking toe te voegen aan een bestaande kolom van de tabel, gebruiken we de ALTER TABLE ADD CONSTRAINT verklaring:
ALTER TABLE [tbl_name]
ADD CONSTRAINT [constraint_name] DEFAULT [default_value] FOR [Column_name]
In de syntaxis,
- tbl_name :specificeer de naam van de tabel waaraan u de standaardbeperking wilt toevoegen.
- constraint_name :specificeer de gewenste beperkingsnaam.
- column_name: specificeer de naam van de kolom waar u de standaardbeperking wilt maken.
- default_value: specificeer de waarde die u wilt invoegen – een geheel getal, teken of tekenreeks.
Als we de waarde van de kolomnaam niet specificeren in de INSERT-instructie, wordt de waarde ingevoegd die is opgegeven in de default_value parameter.
Laten we eerst de Product_name . toevoegen kolom in SalesDetails :
ALTER TABLE salesdetails
ADD product_name VARCHAR(500)
We voegen de gegevens in de tabel in zonder de kolomwaarde Productnaam op te geven. De zoekopdracht moet N.v.t. . invoegen .
Om dat te doen, maak ik een standaardbeperking met de naam DF_SalesDetails_ProductName op de Product_name kolom. De volgende query creëert een standaardbeperking:
ALTER TABLE dbo.salesdetails
ADD CONSTRAINT df_salesdetails_productname DEFAULT 'N/A' FOR product_name
Laten we nu het dwanggedrag observeren. Voeg een record in zonder de productnaam op te geven:
INSERT INTO salesdetails
(product_code,
product_name,
sale_qty)
VALUES ('PROD0002',
'Dell Optiplex 7080',
20)
INSERT INTO salesdetails
(product_code,
sale_qty)
VALUES ('PROD0003',
50)
Nadat het record is ingevoegd, voert u de SELECT-query uit om de gegevens te bekijken:
USE demodatabase
go
SELECT *
FROM salesdetails
go
Uitvoer
Zoals je kunt zien in de bovenstaande afbeelding, is de waarde van de Product_name kolom voor PROD0003 is N.v.t. .
De DEFAULT-beperking wijzigen met behulp van T-SQL-scripts
We kunnen de definitie van de standaardbeperking wijzigen:verwijder eerst de bestaande beperking en maak vervolgens de beperking met een andere definitie.
Stel, in plaats van N.v.t. . in te voegen , we willen Niet van toepassing . invoegen . Eerst moeten we de DF_SalesDetails_ProductName . weglaten beperking. Voer de volgende vraag uit:
ALTER TABLE dbo.salesdetails
DROP CONSTRAINT df_salesdetails_productname
Wanneer de beperking is verwijderd, voert u de query uit om de beperking te maken:
ALTER TABLE dbo.salesdetails
ADD CONSTRAINT df_salesdetails_productname DEFAULT 'Not Applicable' FOR
product_name
Laten we nu een record invoegen zonder de productnaam op te geven:
INSERT INTO salesdetails
(product_code,
sale_qty)
VALUES ('PROD0004',
10)
Voer de SELECT-instructie uit om de gegevens van de SalesDetails . te bekijken tafel:
USE demodatabase
go
SELECT *
FROM salesdetails
go
Uitvoer
Zoals u kunt zien, is de waarde van de Product_name kolom is niet van toepassing.
De STANDAARD beperking bekijken met SSMS
We kunnen de lijst met de DEFAULT-beperking bekijken met SQL Server Management Studio en dynamische beheerweergaven opvragen.
Open SSMS en vouw Databases uit > DemoDatabase > Verkoopdetails > Beperking :
U kunt de twee beperkingen zien met de naam DF_SalesDetails_SaleQty en DF_SalesDetails_ProductName gemaakt.
Een andere manier om beperkingen te bekijken door sys.default_constraints op te vragen . De volgende query vult de lijst met standaardbeperkingen en hun definities:
SELECT NAME [Constraint name],
Object_name(parent_object_id)[Table Name],
type_desc [Consrtaint Type],
definition [Constraint Definition]
FROM sys.default_constraints
Uitvoer
We kunnen de sp_helpconstraint . gebruiken opgeslagen procedure om de lijst met beperkingen die in de tabel zijn gemaakt te bekijken:
EXEC Sp_helpconstraint 'SalesDetails'
Uitvoer
De constraint_keys kolom toont de standaard beperkingsdefinitie.
De beperking laten vallen
We kunnen een beperking op verschillende manieren laten vallen. We kunnen dit doen door een van de volgende methoden te gebruiken:
- ALTER TABLE DROP CONSTRAINT-instructie.
- DROP DEFAULT-instructie.
Laat een beperking vallen met het commando ALTER TABLE DROP CONSTRAINT
Om de beperking te laten vallen, kunnen we de ALTER TABLE DROP CONSTRAINT gebruiken opdracht. De syntaxis is als volgt:
Alter table [tbl_name] drop constraint [constraint_name]
In de syntaxis,
- tbl_name: specificeer de tabelnaam met een kolom met standaardbeperking.
- constraint_name: specificeer de beperkingsnaam die u wilt verwijderen.
Stel dat we de DF_SalesDetails_SaleQty willen laten vallen beperking van de SalesDetails tafel. Voer de query uit:
ALTER TABLE dbo.salesdetails
DROP CONSTRAINT [DF_SalesDetails_SaleQty]
Voer de onderstaande query uit om te controleren of de beperking is verwijderd:
SELECT NAME [Constraint name],
Object_name(parent_object_id)[Table Name],
type_desc [Consrtaint Type],
definition [Constraint Definition]
FROM sys.default_constraints
Uitvoer
De beperking is verwijderd.
Verwijder de DEFAULT-beperking met behulp van de DROP DEFAULT-instructie
Laten we nu eens kijken hoe we de standaardbeperking kunnen verwijderen met behulp van de DROP DEFAULT uitspraak. De syntaxis van de DROP DEFAULT verklaring is als volgt:
DROP DEFAULT [constraint_name]
- constraint_name: specificeer de beperkingsnaam die u wilt verwijderen.
De beperking verwijderen met de DROP DEFAULT instructie, voer de volgende query uit:
IF EXISTS (SELECT NAME
FROM sys.objects
WHERE NAME = 'DF_SalesDetails_ProductName'
AND type = 'D')
DROP DEFAULT [DF_SalesDetails_ProductName];
Samenvatting
Daarom hebben we verschillende essentiële aspecten van werken met de standaardbeperkingen onderzocht. We hebben geleerd hoe u een standaardbeperking kunt maken tijdens het maken van een nieuwe tabel of een standaardbeperking kunt toevoegen aan een bestaande kolom van de tabel.
We hebben ook de gevallen onderzocht van het wijzigen van de standaardbeperkingsdefinitie, het bekijken van de details van standaardbeperkingen op verschillende manieren en het laten vallen van de standaardbeperking.
We hopen dat deze informatie en de praktische voorbeelden die we hebben onderzocht, nuttig zullen zijn bij uw werk.
Lees ook
SQL INSERT INTO SELECT:5 eenvoudige manieren om met duplicaten om te gaan