linux 级联删除文件夹,级联删除表中的记录(不通过级联约束)

该博客分享了一个用于级联删除数据库表及其所有子表记录的MySQL存储过程。这个存储过程通过游标遍历表的外键约束,递归调用自身删除相关联的子表,最后执行删除主表的SQL语句,确保数据完整删除。内容涉及到数据库设计、SQL编程和存储过程的使用。
摘要由CSDN通过智能技术生成

注意:此文档是本人写的

--级联删除表中的记录

CREATE PROCEDURE proc_delete_data(p_tname varchar(100))

begin

declare v_tablename varchar(50);

declare flag int default 0;

--定义一个游标,此游标返回指定表的子表

declare cur_constraint cursor for select b.table_name

from information_schema.key_column_usage a,information_schema.key_column_usage b

where a.table_schema=b.referenced_table_schema

and a.table_name=b.referenced_table_name

and a.column_name=b.referenced_column_name

and a.constraint_name='PRIMARY'

and a.table_schema=(select database())

and a.table_name=upper(p_tname);

--定义异常处理

declare continue handler for not found

set flag=1;

open cur_constraint;

repeat

fetch cur_constraint into v_tablename;

if flag=0 then

--递归寻找指定表的子表

call proc_delete_data(v_tablename);

end if;

until flag=1

end repeat;

close cur_constraint;

--动态执行SQL

set @v_sql = concat( 'delete from ', p_tname );

prepare stmt from @v_sql;

execute stmt ;

deallocate prepare stmt;

END;

/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/50509/viewspace-174252/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值