Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE PROCEDURE `check_fk`( IN tbl_name varchar(64), IN id INT )
- BEGIN
- DECLARE salir INT DEFAULT 0;
- DECLARE fk_table VARCHAR(64);
- DECLARE fk_column VARCHAR(64);
- DECLARE cursor_tablas_fk CURSOR FOR
- SELECT kcu.table_name, kcu.column_name
- FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
- WHERE kcu.TABLE_SCHEMA=DATABASE()
- AND kcu.referenced_table_name = tbl_name;
- DECLARE CONTINUE HANDLER FOR NOT FOUND
- BEGIN
- SET salir = 1;
- END;
- CREATE TEMPORARY TABLE IF NOT EXISTS tablas_rompe(
- tbl_name VARCHAR(64)
- );
- DELETE FROM tablas_rompe;
- OPEN cursor_tablas_fk;
- loop_tablas: LOOP
- FETCH cursor_tablas_fk INTO fk_table, fk_column;
- IF salir THEN LEAVE loop_tablas; END IF;
- SET @sql_check_fk = CONCAT('SET @existe_id = EXISTS( SELECT *',
- ' FROM ',fk_table,
- ' WHERE ',fk_column,'=',id,' )');
- PREPARE check_fk_select FROM @sql_check_fk;
- EXECUTE check_fk_select;
- DEALLOCATE PREPARE check_fk_select;
- IF @existe_id THEN
- INSERT INTO tablas_rompe(tbl_name)
- VALUES(fk_table);
- END IF;
- END LOOP;
- CLOSE cursor_tablas_fk;
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement