用外鍵或Triggercreate trigger tr_a_iud_check on 商品清单表A for insert,update,delete
as
if exists(select * from inserted 
                where 编码 in (select 编码 from 销售清单表B))
begin
  raiserror('can not delete',16,1)
  rollback tran
end

解决方案 »

  1.   

    如果A表的编码是主键或者唯一索引,加外键约束:
    alter table B表 add
    CONSTRAINT FK_B表_12345 FOREIGN KEY 
    (
    编码
    ) REFERENCES A表 (
    编码
    )否则,只能用触发器了,楼上的触发器有些问题,限制插入、修改了create trigger tr_a_iud_check on 表A for delete
    as
    if exists(select * from deleted 
                    where 编码 in (select 编码 from 表B))
    begin
      raiserror('can not delete',16,1)
      rollback tran
    endcreate trigger tr_a_iud_check on 表A for update
    as
    if update(编码) and exists(select * from deleted 
                    where 编码 in (select 编码 from 表B))
    begin
      raiserror('can not update',16,1)
      rollback tran
    end