How to change the foreign key referential action? (behavior)

后端 未结 6 602
眼角桃花
眼角桃花 2020-11-27 13:11

I have set up a table that contains a column with a foreign key, set to ON DELETE CASCADE (delete child when parent is deleted)

What would the SQL com

6条回答
  •  误落风尘
    2020-11-27 13:43

    I had a bunch of FKs to alter, so I wrote something to make the statements for me. Figured I'd share:

    SELECT
    
    CONCAT('ALTER TABLE `' ,rc.TABLE_NAME,
        '` DROP FOREIGN KEY `' ,rc.CONSTRAINT_NAME,'`;')
    , CONCAT('ALTER TABLE `' ,rc.TABLE_NAME,
        '` ADD CONSTRAINT `' ,rc.CONSTRAINT_NAME ,'` FOREIGN KEY (`',kcu.COLUMN_NAME,
        '`) REFERENCES `',kcu.REFERENCED_TABLE_NAME,'` (`',kcu.REFERENCED_COLUMN_NAME,'`) ON DELETE CASCADE;')
    
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
    LEFT OUTER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
        ON kcu.TABLE_SCHEMA = rc.CONSTRAINT_SCHEMA
        AND kcu.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
    WHERE DELETE_RULE = 'NO ACTION'
    AND rc.CONSTRAINT_SCHEMA = 'foo'
    

提交回复
热议问题