Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Che cos'è il vincolo predefinito in SQL Server - Esercitazione su SQL Server / TSQL Parte 90

Che cos'è il vincolo predefinito in SQL Server:

Il vincolo predefinito inserisce il valore predefinito in una colonna quando non si fornisce un valore per la colonna.
Capiamo usando gli esempi seguenti.

Scenario:

Diciamo che devi creare una tabella dbo.Customer con Nome, Cognome, Nome Paese e Regione. Se l'utente non fornisce i valori per le colonne Country Name e Region, vuoi sempre inserire Country Name='USA' e per Region='Nord America'.
Lo script seguente può essere utilizzato per creare un vincolo predefinito per le colonne Country Name e Region.

USE YourDatabaseName
GO
CREATE TABLE dbo.Customer (
    FirstName VARCHAR(50)
    ,LastName VARCHAR(50)
    ,CountryName VARCHAR(50) DEFAULT 'USA'
    ,Region VARCHAR(50) DEFAULT 'North America'
    )



Ora inserisci un paio di record fornendo valori per tutte le colonne utilizzando le istruzioni di inserimento sottostanti.
--Insert some sample data by provided CountryName and Region
Insert into dbo.Customer (FirstName,LastName,CountryName,Region)
Values('Aamir','Shahzad','Pakistan','Asia')
go
Insert into dbo.Customer (FirstName,LastName,CountryName,Region)
Values('Sukhjeet','Singh','India','Asia')
go


Ora inserisci solo i valori nelle colonne Nome e Cognome. Poiché abbiamo creato il vincolo predefinito su nome paese e regione, dovrebbe inserire automaticamente CountryName='USA' e Region='Nord America'.
Insert into dbo.Customer(FirstName,LastName)
Values ('John','Smith')
go

Insert into dbo.Customer(FirstName,LastName)
Values ('Christy','Ladson')
 
 
 Controlliamo i dati nella tabella dbo.Customer per assicurarci che i nostri vincoli predefiniti funzionino come previsto.
Select * from  dbo.Customer
 
Come creare un vincolo predefinito in SQL Server
 Quando abbiamo creato i vincoli predefiniti, non abbiamo fornito alcun nome, controlliamo quali nomi ha assegnato loro SQL Server utilizzando sys.objects
--Get the Constraint Names in SQL Server
Select * from sys.objects
where type_desc='DEFAULT_CONSTRAINT'
 
Come controllare le informazioni sui vincoli predefiniti in SQL Server
 Se la tua azienda utilizza alcuni standard di denominazione e desideri creare il vincolo predefinito con tali standard, puoi specificare il nome durante la creazione. Sto usando DF_SchemaName_TableName_ColumnName per il mio nome di vincolo come mostrato di seguito.
use YourDatabaseName
Go
Create Table dbo.tblCustomer
(
FirstName VARCHAR(50),
LastName VARCHAR(50),
CountryName VARCHAR(50) Constraint DF_dbo_tblCustomer_CountryName Default  'USA' ,
Region VARCHAR(50) Constraint  DF_dbo_tblCustomer_Region default 'North America')
 
Eseguiamo la query su sys.objects ancora una volta per ottenere il nome del vincolo predefinito con il nome della tabella.
--Get the Constraint Names in SQL Server
Select name,object_name(Parent_object_id) 
as TableName from sys.objects
where type_desc='DEFAULT_CONSTRAINT'
 
Come creare un vincolo predefinito con il nome in SQL Server
 
Video demo:cos'è il vincolo predefinito in SQL Server e come creare un vincolo predefinito