没有用过erwin。不过你把这两个触发器的代码贴出来就能看得出为什么要加了

解决方案 »

  1.   

    你可以修改 erwin 中的关系(cascade、restinct、none)修改为 none,使它不产生触发器
      

  2.   

    两个表为student表和class表,其中class表的主键classid作为student表的外键。
    从Erwin导入到oracle8i数据库,会产生两个触发器:
    在student表:TU_STUDENT触发器代码如下:
    declare numrows INTEGER;
    begin
        /* ERwin Builtin Tue May 13 10:20:05 2003 */
        /* CLASS R/10 STUDENT ON CHILD UPDATE SET NULL */
        update STUDENT
          set
            /* STUDENT.CLASSID = NULL */
            STUDENT.CLASSID = NULL
          where
            not exists (
              select * from CLASS
                where
                  /* :new.CLASSID = CLASS.CLASSID */
                  :new.CLASSID = CLASS.CLASSID
            ) and
            /* STUDENT.STUDENTID = :new.STUDENTID */
            STUDENT.STUDENTID = :new.STUDENTID;
    -- ERwin Builtin Tue May 13 10:20:05 2003
    end;
    TI_STUDENT代码如下:
    declare numrows INTEGER;
    begin
        /* ERwin Builtin Tue May 13 10:20:05 2003 */
        /* CLASS R/10 STUDENT ON CHILD INSERT SET NULL */
        update STUDENT
          set
            /* STUDENT.CLASSID = NULL */
            STUDENT.CLASSID = NULL
          where
            not exists (
              select * from CLASS
                where
                  /* :new.CLASSID = CLASS.CLASSID */
                  :new.CLASSID = CLASS.CLASSID
            ) and
            /* STUDENT.STUDENTID = :new.STUDENTID */
            STUDENT.STUDENTID = :new.STUDENTID;
    -- ERwin Builtin Tue May 13 10:20:05 2003
    end;
    在student表中插入记录时会报错:触发器函数不能读
      

  3.   

    在Erwin中将RI Actions设为空是可以的,但不能保证数据的一致性,不是最好的办法。
    另外想请教一下:在RI Actions中有三组选项:
    Child    Parent
    Child    Parent
    Child    Parent
    每组的Child和Parent都有多个不同选项(restrict、cascade、set default、set null)请问不同的选项值分别在什么情况下使用?而且为什么需要三组,不同的组有什么分别?
    谢谢大家支持!
      

  4.   

    这两个触发器的作用是相同的,即当CLASS表中不存在某个CLASSID的时候,把STUDENT表中相应的CLASSID设成NULL,从而保证了数据合法性。“在student表中插入记录时会报错:触发器函数不能读”是因为触发器无效,检查触发器状态,修改错误然后重新编译。
      

  5.   

    想请教KingSunSha(弱水三千):在Erwin中不同的RI Actions,在导入数据库时会产生不同的触发器(如我上面所贴内容),应该如何设置这些选项,有什么分别?不知是否用过erwin建模,能否帮我解答?多谢!
      

  6.   

    非常抱歉我没有用过erwin,所以帮不了你。
    就帮你up一下吧!
      

  7.   

    是因为Erwin作为数据库建模工具不好用吗?为什么这么少人支持?