触发器可以做到“删除表A数据时,一定要先删除数据表B(或者数据表B的特定数据)”
至于“删除表A时,一定要先删除数据表B”,因为删除表操作是DDL,程序很难控制,我想正规的做法是通过权限控制的

解决方案 »

  1.   

    1. 对于表,可以增加一个辅助列,通过外键约束来实现这个目的
       例如:
    create table A(
    aaa int identity(1,1) unique,  --辅助列
    id int)create table B(
    aaa int default 1 references A(aaa),   --限制删除A表的辅助列
    id int)
    go--直接删除
    drop table A/*--结果
    服务器: 消息 3726,级别 16,状态 1,行 3
    未能除去对象 'A',因为该对象正由一个 FOREIGN KEY 约束引用。
    --*/
    godrop table b,a
      

  2.   

    2.  存储过程做不到3.  sql 2005 可以做到, sql 2005 支持 ddl 触发器,可以在删除表时触发并且做你要求的检测.