Alle Fremdschlüssel-Einschränkungen (foreign key constraints) in PostgreSQL löschen
Hat man in PostgreSQL Fremdschlüssel-Einschränkungen („foreign key constraints“) gesetzt, kann man Tabellen die verknüpft sind nicht mehr so einfach leeren, ohne diese Constraints vorher zu löschen.
In bestimmten (eher seltenen) Fällen kommt man in die Situation wo man alle gesetzten Constraints automatisch löschen möchte. Deshalb hier ein Code-Schnippsel um dies in PHP und Doctrine durchzuführen:
function dropForeignKeyConstraints($entityManager) { $q = 'SELECT \'ALTER TABLE "\'||nspname||\'"."\'||relname||\'" DROP CONSTRAINT "\'||conname||\'";\' as stmt FROM pg_constraint INNER JOIN pg_class ON conrelid=pg_class.oid INNER JOIN pg_namespace ON pg_namespace.oid=pg_class.relnamespace WHERE contype=\'f\' ORDER BY CASE WHEN contype=\'f\' THEN 0 ELSE 1 END,contype,nspname,relname,conname'; $connection = $entityManager->getConnection(); $result = $connection->fetchAll($q); foreach ($result as $row) { $stmt = $row['stmt']; $connection->executeUpdate($stmt); } }