📖💡 DDL - Constraints
Constraints sind Einschränkungen, die Regeln in der DB erzwingen. Sie sind eigene Objekte, die an eine Tabelle gebunden sind und überprüfen die DML-Anweisungen, bevor die Änderungen geschrieben werden
Constraint Typ
Beschreibung
PRIMARY KEY
Erzwingt Einmaligkeit eines Datensatzes
eindeutig
NOT NULL
automatische Indexerstellung
sollte jede Tabelle haben
kann aus einer oder mehreren Spalten bestehen (NOT NULL gilt für jede Spalte)
nur einen PK pro Tabelle möglich
UNIQUE KEY
Erzwingt Einmaligkeit eines Werts in einer Spalte
eindeutig
NULL-Werte sind erlaubt
automatische Indexerstellung
kann aus einer oder mehreren Spalten bestehen
mehrere pro Tabelle möglich
FOREIGN KEY
Erzwingt referentielle Integrität
verweist auf den PK einer anderen Tabelle
Spalten dürfen nur in der anderen Tabelle enthaltene Werte aufnehmen oder
NULL sein
NOT NULL muss wenn benötigt extra definiert sein
CHECK
Erzwingt Zugehörigkeit eines Wertes zu Bereich
Einfache Gültigkeitsregeln / Geschäftsregeln
Verweis auf Inhalte derselben Datenzeile
kein Verweis auf andere Datensätze in derselben oder anderen Tabelle möglich
bei komplexen Geschäftsregeln werden Trigger benötigt
DEFAULT
Befüllt bei der Eingabe einen Vorgabewert
Standardwerte
werden übernommen, wenn kein Eintrag erfolgt
werden nur bei Neuerfassungen befüllt
Ausnahme: Neue NOT NULL-Spalte wird mit Default-Wert an die Tabelle angefügt
NOT NULL
Verhindert Eingabe von NULL-Marken
Constraints erstellen
Constraints werden optimalerweise direkt beim Anlegen der Tabelle definiert. Hier gibt es die Möglichkeit, die Constraints entweder auf Spaltenebene (bei der Spaltendefinition) oder auf Tabellenebene (nach den Spaltendefinitionen) zu erstellen.
Constraints auf Spaltenebene
CREATE TABLE Artikel (
artnr int PRIMARY KEY,
artbez varchar(100) NOT NULL,
artkat char(1) CHECK (artkat in ('A','B','C')),
aktiv bit DEFAULT 1,
);
-- Primärschlüssel mit Auto-Increment (automatischem Hochzählen)
CREATE TABLE Artikel (
artnr int PRIMARY KEY IDENTITY(1,1),
artbez varchar(100) NOT NULL,
);
-- mehrere Constraints in einer Spalte
CREATE TABLE Kategorie (
artkat char(1) PRIMARY KEY CHECK (artkat between 'A' and 'K'),
katbez varchar(100) NOT NULL
);
-- Syntaxvariante: Angabe eines Namens für den Constraint
CREATE TABLE Persons (
PersID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int CONSTRAINT CHK_PersAge CHECK (Age >= 18)
);
Auf Tabellenebene
CREATE TABLE Article (
artnr int NOT NULL,
artbez varchar(100) NOT NULL,
artkat char(1) CHECK (artkat between 'A' and 'K'),
aktiv bit DEFAULT 1,
PRIMARY KEY (artnr, artbez)
);
CREATE TABLE Event (
eventID int NOT NULL,
Titel varchar(255) NOT NULL,
StartDate DATETIME NOT NULL,
EndDate DATETIME NOT NULL,
CONSTRAINT CHK_StartEnd CHECK (StartDate < EndDate)
);
Hinzufügen von Constraints zu einer bereits bestehenden Tabelle
Falls die Tabelle bereits existiert, können die Constraints über ALTER
auch nachträglich definiert werden.
Foreign Key
-- Fremdschlüssel definieren
ALTER TABLE Artikel
ADD FOREIGN KEY (artkat) REFERENCES kategorie(artkat);
-- Defaultwert nachträglich festlegen oder ändern
ALTER TABLE Artikel ADD DEFAULT 'Neuer Artikel' FOR artbez;
Primary Key
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
Primary Key (mit Namen)
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);
Check
ALTER TABLE Persons
ADD CHECK (Age>=18);
Check (mit Namen)
ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
Constraint Löschen
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;
💡 Aufgabe 5
Öffne die Datei in Azure Data Studio und löse die Aufgaben.
Last updated
Was this helpful?