给你个触发器的例子
当删除SellCard中一个记录时,相应的SellCardDetail中的明细记录一并删除。create trigger trgDelete on dbo.SellCard
for delete
as 
delete SellCardDetail 
from SellCardDetail,deleted 
where 
SellCardDetail.VoucherID=deleted.VoucherID

解决方案 »

  1.   

    -- sp_MStablerefs
    --declare cur_for cursor  for--declare @tablename varchar(100) 
    --select @tablename='dbo.t_RP_Contact'
    select * from 
    (select
             N'PK_Table' = PKT.name,
             N'FK_Table' = FKT.name,
             N'Constraint' = object_name(r.constid),
    c.status,
    cKeyCol1 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey1)),
    cKeyCol2 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey2)),
    cKeyCol3 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey3)),
    cKeyCol4 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey4)),
    cKeyCol5 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey5)),
    cKeyCol6 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey6)),
    cKeyCol7 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey7)),
    cKeyCol8 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey8)),
    cKeyCol9 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey9)),
    cKeyCol10 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey10)),
    cKeyCol11 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey11)),
    cKeyCol12 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey12)),
    cKeyCol13 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey13)),
    cKeyCol14 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey14)),
    cKeyCol15 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey15)),
    cKeyCol16 = convert(nvarchar(132), col_name(r.fkeyid, r.fkey16)),
    cRefCol1 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey1)),
    cRefCol2 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey2)),
    cRefCol3 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey3)),
    cRefCol4 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey4)),
    cRefCol5 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey5)),
    cRefCol6 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey6)),
    cRefCol7 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey7)),
    cRefCol8 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey8)),
    cRefCol9 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey9)),
    cRefCol10 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey10)),
    cRefCol11 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey11)),
    cRefCol12 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey12)),
    cRefCol13 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey13)),
    cRefCol14 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey14)),
    cRefCol15 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey15)),
    cRefCol16 = convert(nvarchar(132), col_name(r.rkeyid, r.rkey16)),
    N'PK_Table_Owner' = user_name(PKT.uid),
    N'FK_Table_Owner' = user_name(FKT.uid),
             N'DeleteCascade' = OBJECTPROPERTY( r.constid, N'CnstIsDeleteCascade'),
             N'UpdateCascade' = OBJECTPROPERTY( r.constid, N'CnstIsUpdateCascade')
          from dbo.sysreferences r, dbo.sysconstraints c, dbo.sysobjects PKT, dbo.sysobjects FKT,
    (select distinct object_id(object_name(fkeyid)) as objid from sysreferences where rkeyid = object_id('YouTableName')) SRCTB
          where r.constid = c.constid and r.fkeyid = SRCTB.objid
          and PKT.id = r.rkeyid and FKT.id = r.fkeyid) FKTB where PK_Table='YouTableName'
         
      

  2.   

    试一下上面的SQL语句,应该有启发
      

  3.   

    其实!sql server的触发器!是没有这个功能的!
    因为他没有befor级的触发器!
    所以没有办法!但是如果你的两个表之间没有外间约束
    可以用这个!
    create trigger kkk
    on tablename 
    for delete
    as
    begin
    delete tablename1 from tablename1,deleted where tablename1.iid=tablename1.iid 
    end
          
      

  4.   

    MS SQLSERVER2000已经支持级联删除了,可惜我这里买不到四碟装的SQLSERVER2000,有机会试试吧。