Standaardwaarden opgeven voor kolommen
van toepassing op: SQL Server 2016 (13.x) en hoger
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-database in Microsoft Fabric
U kunt SQL Server Management Studio (SSMS) gebruiken om een standaardwaarde op te geven die in de tabelkolom wordt ingevoerd. U kunt een standaardinstelling instellen met behulp van Objectverkenner of door Transact-SQL uit te voeren.
Als u geen standaardwaarde aan de kolom toewijst en de gebruiker de kolom leeg laat, gaat u als volgt te werk:
Als u de optie instelt om null-waarden toe te staan, wordt
NULL
ingevoegd in de kolom.Als u de optie voor het toestaan van null-waarden niet instelt, blijft de kolom leeg, maar kan de gebruiker of toepassing de rij pas invoegen als deze een waarde voor de kolom opgeeft.
U kunt een standaardbeperking voor verschillende taken gebruiken om gegevensconsistentie op databaseniveau te garanderen:
- Stel de rijwaarde voor een kolom 'actief' of 'inschakelen' in op
1
bij het invoegen. - Stel de rijwaarde voor een datumveld in op de huidige datum.
- Stel de rijwaarde voor een veld in op een deterministische systeemfunctie, bijvoorbeeld
DB_NAME()
.
Beperkingen
Voordat u begint, moet u rekening houden met de volgende beperkingen en beperkingen:
Als uw invoer in het standaardwaarde veld een afhankelijke standaardwaarde vervangt (die wordt weergegeven zonder haakjes), wordt u gevraagd de standaardwaarde ongedaan te maken en deze te vervangen door de nieuwe standaardwaarde.
Als u een tekenreeks wilt invoeren, plaatst u de waarde tussen enkele aanhalingstekens (
'
). Gebruik geen dubbele aanhalingstekens ("
), omdat deze zijn gereserveerd voor geciteerde identificatoren.Als u een numerieke standaardwaarde wilt invoeren, voert u het getal zonder aanhalingstekens eromheen in.
Als u een object/functie wilt invoeren, voert u de naam van het object/de functie zonder aanhalingstekens eromheen in.
In Azure Synapse Analytics kunnen alleen constanten worden gebruikt voor een standaardbeperking. Een expressie kan niet worden gebruikt met een standaardbeperking.
Machtigingen
Voor de acties die in dit artikel worden beschreven, is een ALTER
-machtiging vereist voor de tabel.
SQL Server Management Studio gebruiken om een standaardwaarde op te geven
U kunt Objectverkenner in SSMS gebruiken om een standaardwaarde voor een tabelkolom op te geven. Voer hiervoor de volgende stappen uit:
Maak verbinding met uw SQL Server-exemplaar in SSMS.
Klik in Objectverkennermet de rechtermuisknop op de tabel met kolommen waarvoor u de schaal wilt wijzigen en selecteer Ontwerp.
Selecteer de kolom waarvoor u een standaardwaarde wilt opgeven.
Op het tabblad Kolomeigenschappen voert u de nieuwe standaardwaarde in de eigenschap Standaardwaarde of Binding in.
Als u een numerieke standaardwaarde wilt invoeren, voert u het getal in. Voer de naam van een object of functie in. Voer voor een alfanumerieke standaardwaarde de waarde in enkele aanhalingstekens in.
Selecteer in het menu BestandTabelnaam opslaan <>.
Gebruik Transact-SQL om een standaardwaarde op te geven
Er zijn verschillende manieren waarop u een standaardwaarde voor een kolom kunt opgeven met behulp van T-SQL. In elk van de volgende voorbeelden kunt u met deze stappen een nieuwe Transact-SQL query openen.
Maak in Objectverkennerverbinding met een exemplaar van Database Engine.
Selecteer op de standaardbalk Nieuwe query.
Kopieer en plak het voorbeeld in het queryvenster en selecteer uitvoeren.
Een benoemde beperking gebruiken
Wanneer u met databaseprojecten werkt, is het raadzaam om beperkingen met namen te maken. Anders krijgt de standaardbeperking een door het systeem gegenereerde naam, die verschilt voor elke SQL Server-omgeving waarin uw databaseobjecten worden gemaakt.
CREATE TABLE dbo.doc_exz (
column_a INT,
column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);
Gebruik de ALTER TABLE
U kunt een benoemde beperking toevoegen aan een bestaande tabel met ALTER TABLE
.
CREATE TABLE dbo.doc_exz (
column_a INT,
column_b INT
); -- Allows nulls.
GO
INSERT INTO dbo.doc_exz (column_a)
VALUES (7);
GO
ALTER TABLE dbo.doc_exz
ADD CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50 FOR column_b;
GO
Gebruik CREATE TABLE
U kunt een nieuwe tabel maken met standaardbeperkingen met CREATE TABLE
.
CREATE TABLE dbo.doc_exz (
column_a INT,
column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);
Een gemaakte datum instellen
In het volgende voorbeeld wordt de sysdatetimeoffset()
systeemfunctie gebruikt om de rijwaarde van de kolom dateinserted
te vullen met de datum waarop de rij is gemaakt.
CREATE TABLE dbo.test (
id INT identity(1, 1) NOT NULL CONSTRAINT PK_test PRIMARY KEY
,date_inserted DATETIMEOFFSET(2) NOT NULL CONSTRAINT DF_test_date_inserted DEFAULT(sysdatetimeoffset())
);
Een standaardbeperking verandert niet wanneer de rij wordt bijgewerkt. Als u een waarde wilt bijwerken wanneer de rij wordt gewijzigd, kunt u overwegen een triggerte gebruiken, een tijdelijke tabel, een berekende kolomof een rowversion binaire tekenreeks. U kunt ook rijen invoegen door opgeslagen procedures uit te voeren in plaats van rechtstreeks rijen in te voegen, waarbij opgeslagen procedures bedrijfslogica, standaardwaarden en andere regels voor gegevensconsistentie kunnen afdwingen.
Als u rijen wilt detecteren die veranderen, overweeg dan Change Data Capture (CDC), Change Tracking, een tijdstabel, of een Grootboektabel.