-- https://stackoverflow.com/questions/868620/sql-script-to-alter-all-foreign-keys-to-add-on-delete-cascade; WITH CTE AS ( SELECT KCU1.CONSTRAINT_NAME AS FK_CONSTRAINT_NAME, KCU1.TABLE_SCHEMA AS FK_SCHEMA_NAME, KCU1.TABLE_NAME AS FK_TABLE_NAME, KCU1.COLUMN_NAME AS FK_COLUMN_NAME, KCU1.ORDINAL_POSITION AS FK_ORDINAL_POSITION, KCU2.CONSTRAINT_NAME AS REFERENCED_CONSTRAINT_NAME, KCU2.TABLE_SCHEMA AS REFERENCED_SCHEMA_NAME, KCU2.TABLE_NAME AS REFERENCED_TABLE_NAME, KCU2.COLUMN_NAME AS REFERENCED_COLUMN_NAME, KCU2.ORDINAL_POSITION AS REFERENCED_ORDINAL_POSITION FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU1 ON RC.CONSTRAINT_CATALOG = KCU1.CONSTRAINT_CATALOG AND RC.CONSTRAINT_SCHEMA = KCU1.CONSTRAINT_SCHEMA AND RC.CONSTRAINT_NAME = KCU1.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU2 ON RC.UNIQUE_CONSTRAINT_CATALOG = KCU2.CONSTRAINT_CATALOG AND RC.UNIQUE_CONSTRAINT_SCHEMA = KCU2.CONSTRAINT_SCHEMA AND RC.UNIQUE_CONSTRAINT_NAME = KCU2.CONSTRAINT_NAME AND KCU1.ORDINAL_POSITION = KCU2.ORDINAL_POSITION ) SELECT FK_SCHEMA_NAME, FK_TABLE_NAME, FK_CONSTRAINT_NAME --,FK_COLUMN_NAME --,REFERENCED_COLUMN_NAME , 'ALTER TABLE ' || QUOTE_IDENT(FK_SCHEMA_NAME) || '.' || QUOTE_IDENT(FK_TABLE_NAME) || ' ' || 'DROP CONSTRAINT ' || QUOTE_IDENT(FK_CONSTRAINT_NAME) || '; ' AS DROPSTMT , 'ALTER TABLE ' || QUOTE_IDENT(FK_SCHEMA_NAME) || '.' || QUOTE_IDENT(FK_TABLE_NAME) || ' ADD CONSTRAINT ' || QUOTE_IDENT(FK_CONSTRAINT_NAME) || ' FOREIGN KEY(' || STRING_AGG(FK_COLUMN_NAME, ', ') || ') ' || ' REFERENCES ' || QUOTE_IDENT(REFERENCED_SCHEMA_NAME) || '.' || QUOTE_IDENT(REFERENCED_TABLE_NAME) || '(' || STRING_AGG(REFERENCED_COLUMN_NAME, ', ') || ') ON DELETE CASCADE ; ' AS CREATESTMT FROM CTE GROUP BY FK_SCHEMA_NAME, FK_TABLE_NAME, FK_CONSTRAINT_NAME, REFERENCED_SCHEMA_NAME, REFERENCED_TABLE_NAME