sql删除子表和父表中数据,只能delete from 父表 where id=@id和delete from 子表 where id=@id 两个语句
可以使用SQL 触发器来删除子表数据
触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create、alter、drop语句。
DML触发器分为:
after触发器(之后触发)
a、 insert触发器
b、 update触发器
c、 delete触发器
下面只介绍delete 触发器,SQL 如下:
--delete删除类型触发器
if (object_id('tgr_classes_delete', 'TR') is not null)
drop trigger tgr_classes_delete
go
create trigger tgr_classes_delete
on classes
for delete --删除触发
as
print '备份数据中……';
if (object_id('classesBackup', 'U') is not null)
--存在classesBackup,直接插入数据
insert into classesBackup select name, createDate from deleted;
else
--不存在classesBackup创建再插入
select * into classesBackup from deleted;
print '备份数据成功!';
go
所以每次你只需要删除一个表,触发器是自动的。
怎么写啊
搜一下,删除触发器
现在是由外键约束的两个表,想删除里面相关的数据
没明白,举个例子........