Co je výchozí omezení na serveru SQL:
Výchozí omezení vloží výchozí hodnotu do sloupce, pokud nezadáte hodnotu pro sloupec.Pojďme to pochopit pomocí níže uvedených příkladů.
Scénář:
Řekněme, že potřebujete vytvořit tabulku dbo.Customer s křestním jménem, příjmením, názvem země a regionem. Pokud uživatel nezadá hodnoty pro sloupce Country Name a Region, vždy chcete vložit Country Name='USA' a pro Region='Severní Amerika'.Níže uvedený skript lze použít k vytvoření výchozího omezení pro sloupce Název země a Oblast.
USE YourDatabaseName GO CREATE TABLE dbo.Customer ( FirstName VARCHAR(50) ,LastName VARCHAR(50) ,CountryName VARCHAR(50) DEFAULT 'USA' ,Region VARCHAR(50) DEFAULT 'North America' )
Nyní vložte několik záznamů zadáním hodnot pro všechny sloupce pomocí níže uvedených příkazů vložení.
--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
Nyní vložte pouze hodnoty do sloupců Jméno a Příjmení. Protože jsme vytvořili výchozí omezení pro název země a region, mělo by se automaticky vložit CountryName='USA' a Region='Severní Amerika'.
Insert into dbo.Customer(FirstName,LastName) Values ('John','Smith') go Insert into dbo.Customer(FirstName,LastName) Values ('Christy','Ladson')
Pojďme zkontrolovat data v tabulce dbo.Customer, abychom se ujistili, že naše výchozí omezení fungují podle očekávání.
Select * from dbo.Customer
Jak vytvořit výchozí omezení v SQL Server |
Když jsme vytvořili výchozí omezení, nezadali jsme žádný název, pojďme zkontrolovat, jaké názvy jim SQL Server přidělil pomocí sys.objects
--Get the Constraint Names in SQL Server Select * from sys.objects where type_desc='DEFAULT_CONSTRAINT'
Jak zkontrolovat informace o výchozích omezeních na serveru SQL Server |
Pokud vaše společnost používá některé standardy pojmenování a chtěli byste s těmito standardy vytvořit výchozí omezení, můžete název zadat při jejich vytváření. Používám k použití DF_SchemaName_TableName_ColumnName pro můj název omezení, jak je znázorněno níže.
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')
Pojďme spustit dotaz na sys.objects ještě jednou, abychom získali výchozí název omezení s názvem tabulky.
--Get the Constraint Names in SQL Server Select name,object_name(Parent_object_id) as TableName from sys.objects where type_desc='DEFAULT_CONSTRAINT'
Jak vytvořit výchozí omezení s názvem na serveru SQL |
Video ukázka:Co je výchozí omezení v SQL Server a jak vytvořit výchozí omezení