有关触发器问题(从Erwin导入Oracle数据库时产生触发器问题)? 没有用过erwin。不过你把这两个触发器的代码贴出来就能看得出为什么要加了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以修改 erwin 中的关系(cascade、restinct、none)修改为 none,使它不产生触发器 两个表为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 2003end;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 2003end;在student表中插入记录时会报错:触发器函数不能读 在Erwin中将RI Actions设为空是可以的,但不能保证数据的一致性,不是最好的办法。另外想请教一下:在RI Actions中有三组选项:Child ParentChild ParentChild Parent每组的Child和Parent都有多个不同选项(restrict、cascade、set default、set null)请问不同的选项值分别在什么情况下使用?而且为什么需要三组,不同的组有什么分别?谢谢大家支持! 这两个触发器的作用是相同的,即当CLASS表中不存在某个CLASSID的时候,把STUDENT表中相应的CLASSID设成NULL,从而保证了数据合法性。“在student表中插入记录时会报错:触发器函数不能读”是因为触发器无效,检查触发器状态,修改错误然后重新编译。 想请教KingSunSha(弱水三千):在Erwin中不同的RI Actions,在导入数据库时会产生不同的触发器(如我上面所贴内容),应该如何设置这些选项,有什么分别?不知是否用过erwin建模,能否帮我解答?多谢! 非常抱歉我没有用过erwin,所以帮不了你。就帮你up一下吧! 是因为Erwin作为数据库建模工具不好用吗?为什么这么少人支持? 求助:怎样实现oracle数据迁移 在orcale中如何导入数据库? 大家都有什么工具来管理数据库字典和脚本? 关于表空间 高分求救!LONG数据类型,如何知道有没有包含某字符??? 如何可以知道一个表的创建日期和最后的修改日期??? 各位高手,oracle与磁盘阵列,怎么排合适 Oracle安装成功以后,TNSListener服务无法启动。 有个难题 数据更新语句求助 问高人如何读*.sql文件 oracle还原的问题。
从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表中插入记录时会报错:触发器函数不能读
另外想请教一下:在RI Actions中有三组选项:
Child Parent
Child Parent
Child Parent
每组的Child和Parent都有多个不同选项(restrict、cascade、set default、set null)请问不同的选项值分别在什么情况下使用?而且为什么需要三组,不同的组有什么分别?
谢谢大家支持!
就帮你up一下吧!