这样改:CREATE trigger test1 on dbo.status
for update,delete
as
if exists(select D.code from deleted D join person P on D.code=P.status)
begin
    rollback tran
    raiserror('与其他表有关联,不能更新,删除',16,1)
end

解决方案 »

  1.   

    begin
        rollback tran
        raiserror('与其他表有关联,不能更新,删除',16,1)
    endbengin
    end
    相当于vb中的
    ifend if
    你的触发器是无论如何都要raiserror('与其他表有关联,不能更新,删除',16,1)
    执行一次
      

  2.   

    CREATE trigger test1 on dbo.status
    for update,delete
    as
    if exists(select D.code from deleted D join person P on D.code=P.status)
    begin
        rollback tran
        raiserror('与其他表有关联,不能更新,删除',16,1)
    end
      

  3.   

    我自己觉得这种事情,用表与表的关系解决最好了,还非得用触发器吗??
    主键表是status 外键表是person
      

  4.   

    的确,raiserror语句无论如何都执行一句,但是它是VB出错,弹出VB出错对话框.
    实时错误:'-2147217900(80040e14)':与其他表关联,不能更新,删除。
      

  5.   

    不行,还是这个错误,弹出VB错误对话框:
    实时错误:'-2147217900(80040e14)':与其他表关联,不能更新,删除。