DEFAULT
Constraints & Struktur
Der DEFAULT-Constraint legt einen Standardwert für eine Spalte fest. Gibst du beim INSERT keinen Wert für diese Spalte an, trägt die Datenbank automatisch den Standardwert ein.
Syntax beim Anlegen
CREATE TABLE Produkte ( ProduktID INT PRIMARY KEY, Produktname VARCHAR(100) NOT NULL, Kategorie VARCHAR(50) DEFAULT 'Sonstiges', Preis DECIMAL(8,2) DEFAULT 0 );
Beispiel
Wir fügen ein Produkt ohne Kategorie ein:
INSERT INTO Produkte (ProduktID, Produktname, Preis) VALUES (5, 'Notizbuch', 4.90);
Die Spalte Kategorie wird automatisch gefüllt:
| ProduktID | Produktname | Kategorie | Preis |
|---|---|---|---|
| 5 | Notizbuch | Sonstiges | 4.90 |
Dynamische Standardwerte
Häufig setzt man das aktuelle Datum als Standard für ein Bestelldatum:
CREATE TABLE Bestellungen ( BestellID INT PRIMARY KEY, KundenID INT, Bestelldatum DATE DEFAULT (CURRENT_DATE) );
Die Funktion heißt je Dialekt etwas anders: CURRENT_DATE (Standard/PostgreSQL/MySQL), GETDATE() (SQL Server) oder NOW() für Datum + Uhrzeit.
DEFAULT nachträglich setzen
- MySQL:
ALTER TABLE Produkte ALTER Kategorie SET DEFAULT 'Sonstiges'; - SQL Server:
ALTER TABLE Produkte ADD CONSTRAINT df_kat DEFAULT 'Sonstiges' FOR Kategorie;
Stolperfalle
Der Standardwert greift nur, wenn die Spalte beim INSERT weggelassen wird. Schreibst du ausdrücklich NULL hinein, wird auch NULL gespeichert (sofern die Spalte das erlaubt) – der DEFAULT springt dann nicht ein. Kombiniere DEFAULT daher oft mit NOT NULL.