文秘频道 | 图片频道 | 教程频道 | 教案频道 | 加入收藏 | 会员投稿
当前位置:教程荟萃首页 >> 编程开发 >> MYSQL >> 级联删除表中的记录(不通过级联约束)
级联删除表中的记录(不通过级联约束)
2008-02-21 16:36:35  作者:未知  来源:转载  浏览次数:0  文字大小:【】【】【
--级联删除表中的记录
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;
/

0

顶一下

0

踩一下
友情链接 | 诚聘英才 | 关于我们 | 版权声明 | 联系我们 | 广告服务
  •     大智学场copyright©2007 站长QQ:138290388 闽ICP备05004390号 
    声明:站内提供的所有教程文章均是由网上搜集或网友提供,若侵犯了你的版权利益,敬请来信通知我们!