· 7 years ago · Nov 08, 2018, 11:48 PM
1DROP PROCEDURE IF EXISTS DropForeignKey;
2
3DELIMITER //
4CREATE PROCEDURE DropForeignKey()
5BEGIN
6 DECLARE _table_name VARCHAR(64);
7 DECLARE _constraint_name VARCHAR(64);
8 DECLARE _done INT DEFAULT FALSE;
9 DECLARE cur CURSOR FOR
10 SELECT table_name, constraint_name
11 FROM information_schema.key_column_usage
12 WHERE constraint_name LIKE 'fk_%';
13 DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;
14
15 OPEN cur;
16 read_loop: LOOP
17 FETCH FROM cur INTO _table_name, _constraint_name;
18
19 IF _done THEN
20 LEAVE read_loop;
21 END IF;
22
23 SET @stmt = CONCAT('ALTER TABLE ', _table_name, " DROP FOREIGN KEY ", _constraint_name);
24 PREPARE statement FROM @stmt;
25 EXECUTE statement;
26 DEALLOCATE PREPARE statement;
27 END LOOP;
28 CLOSE cur;
29
30END//
31DELIMITER ;
32
33CALL DropForeignKey;
34DROP PROCEDURE DropForeignKey;