SQL: Constraints hinzufügen
Published on 18/05/2009
1 min read
In category
db
Beim Leeren von Datenbank-Tabellen müssen immer die vorhandenen Constraints beachtet werden. Das Löschen von Tabellen-Zeilen, obwohl andere darauf verweisen, ist nicht erlaubt (referenzielle Integrität). Versucht man es doch (mittels TRUNCATE [1]) kriegt man eine Fehlermeldung. Hier kann man nun entweder DELETE Statements [2] nutzen, was länger dauern kann, oder man verwendet doch TRUNCATE und muss die vorhandenen Constraints löschen.
ALTER TABLE TableName DROP CONSTRAINT FK_ConstraintName
Durch das Löschen aller Constraints der betroffenen Tabelle kann diese dann mit TRUNCATE geleert werden. Zum Hinzufügen der Constraints:
ALTER TABLE TableName WITH CHECK ADD CONSTRAINT FK_ConstraintsName FOREIGN KEY (columnName) REFERENCES TableNameReference (id)
Constraints können nur dann hinzugefügt werden, wenn sie nicht vorhanden sind. Mit einer Prüfung sieht das dann so aus:
IF NOT EXISTS (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME='TableName' AND CONSTRAINT_NAME='FK_ConstraintName' AND CONSTRAINT_TYPE='FOREIGN KEY') /* SQL Statement to add constraint, see above listing */
Links: [1] SQL Drop (TRUNCATE) [2] SQL DELETE [3] SQL FK Constraints