关于触发的问题(30分)

  • 主题发起人 主题发起人 fstao
  • 开始时间 开始时间
F

fstao

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库为mssql7,主表dbo.master(id和name,id为主关键字),从表
dbo.detail(id1、id和price,id1为主键,id和主表dbo.master的id关联),
我想删除主表的某条记录,同时把从表关联主表的记录也删除掉。我想在
dbo.master创建一触发:
CREATE TRIGGER [deletedetail] ON [master]
FOR DELETE
AS
delete from detail where id=? //这里怎么写?

我知道,用其它方法肯定能做到,我只不过想用触发如何实现而已。
 
delete from detail where id=old.id
 
用触发器可能会有问题
SQL server的触发器是后触发器
是先执行再触发的

但是你在从表中有记录的话
主表删不掉的

实在要写的话
delete from detail where id=deleted.id
不过我总觉得会出错

 
如果主表和从表有外部关联,是不
能在主表的TRIGGER中写的。因为
在主表的记录删除后,才执行TRIGGER,
在删除主表时,从表的记录还在,会产
生非一致性错误。
这条路不通,回头吧。
 
這樣寫
declare @id int
select @id=id from deleted
delete from detail where id=@id
如果你修改主表的ID的話,請參考如下:
declare @oid int,@nid int
select @oid=id from deleted
select @nid=id from inserted
update detail set id=@nid where id=@oid
 
多人接受答案了。
 
后退
顶部