我键了2个表,一个是主键表另一个是外键表
写了个删除出发器也成功生成了
但是当我删除主键表行时还是有外键约束呢?怎么回事CREATE TRIGGER trgDelete ON aw_question
FOR DELETE     
AS           
DECLARE @qid int
SELECT @qid=quesid FROM deleted
DELETE aw_answer WHERE quesid=@qid 
RETURN

解决方案 »

  1.   

    不知道你外键表是如何定义的
    create table table2(ID int primary key foreign key references table1(ID)on delete cascade)
      

  2.   


    CREATE TRIGGER trgDelete ON aw_question 
    instead of DELETE    
    AS          
    DECLARE @qid int 
    SELECT @qid=quesid FROM deleted 
    DELETE aw_answer WHERE quesid=@qid 
    RETURN
      当你要删除主表中某列值的时候,如果外键表中引用了它的数据,   
      你就无法删除,只有先删除外表中的相应数据,然后再删除   
      主表中相对应的数据,如果是这样的话,你可以创建   
      instead   of   触发器就可以啦!
      

  3.   

    instead of  不是 after
      

  4.   

    你是不是没有用删除级联啊,在定义外键的时候要加上on delete cascade
      

  5.   

    谢谢各位,大家说的都有道理,我做的是问答系统不想去修改表的属性,on delete cascade的办法很好,2楼也对不过还要加个DELETE aw_question where quesid=@qid这样2表的数据都删除了,否则只删除外键表数据