SQL: Constraints hinzufügen
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