capypad
0 Tage Serie
sql / expert
Snippet

Exclusive Arc Integrität mit Check-Constraints

Ein Exclusive Arc (oder eine polymorphe Assoziation) stellt sicher, dass ein Datensatz mit genau einem von mehreren möglichen Elternelementen verknüpft ist. Ein CHECK-Constraint auf Tabellenebene erzwingt diese Geschäftsregel mit mathematischer Sicherheit.

snippet.sql
sql
1
2
3
4
5
ALTER TABLE entity_attachments
ADD CONSTRAINT chk_exclusive_owner CHECK (
(user_id IS NOT NULL AND organization_id IS NULL) OR
(user_id IS NULL AND organization_id IS NOT NULL)
);
Erklärung
1
ADD CONSTRAINT chk_exclusive_owner
Erstellt einen benannten Constraint zur Durchsetzung der Datentextegrität über mehrere Spalten hinweg.
2
CHECK ((user_id IS NOT NULL AND ...)
Definiert die logische XOR-Bedingung (exklusives ODER), bei der eine Spalte gesetzt sein muss und die andere null sein muss.