请教大家一个问题:是这样的
首先我建立了一个学生课程数据库,student(Sno,Sname,Sdept,Ssex,Sage); course(Cno,Cname,Credit); sc(Sno,Cno,Grade)三张,在建表的时候是没有加 Cascade 等等约束的;
然后我建立了一个如下触发器:USE 学生课程数据库
GO
CREATE TRIGGER trigger_3
ON Course
FOR UPDATE
AS
IF update(课程号) /*判定该列是否被修改*/
BEGIN
UPDATE SC
SET 课程号=(SELECT 课程号FROM inserted)
FROM SC,deleted
WHERE SC.课程号=deleted.课程号问题就是:为什么我在更新course的时候提示是错误!这和没有建立触发器就没有区别了。不知道原因?请各位帮忙看看!谢谢

解决方案 »

  1.   

    但是在更新的时候,提示:
    UPDATE 语句与 REFERENCE 约束"FK__sc__Cno__182C9B23"冲突。该冲突发生于数据库"SM",表"dbo.sc", column 'Cno'。
    语句已终止。
    可能是哪里错了?应该不是语句问题?
      

  2.   

    :)
    你在创建sc表时,建立了外键。引用了course(cno),
    而在触发器中你又修改了sc的cno。
    所以报错了。
      

  3.   

    由于在创建SC表时,建立了外键约束,但是没有加on update,所以就相当于on update no action,
    也就是说COURSE表就不能更新,所以报错。
      

  4.   

    不明白你最后一句话!也就是说COURSE表就不能更新,所以报错。在没有触发器的时候是不可以,但是我已经有了触发器了(声明联级 update和delete了)应该一样可以执行啊!