我公司有MES程式,为完成一定的功能,需编写触发器,我在一个其他表作了测试,是OK的,
所以转移到正式表上,SQL如下:
CREATE or replace TRIGGER TR_TEST
after INSERT
ON sajet.g_Sn_Status
referencing OLD AS OLD NEW AS NEW
FOR EACH ROW
BEGIN
--IF (:NEW.PROCESS_ID=100007) or (:NEW.PROCESS_ID=100008) THEN
--smt.smtReduce_New(:NEW.WORK_ORDER,:NEW.SERIAL_NUMBER,:NEW.EMP_ID,:NEW.MODEL_ID,:NEW.PDLINE_ID);--------------test sql--------------
for i in 1..10000 loop
INSERT INTO SAJET.jackson_smt_wo(WORK_ORDER)
VALUES('houruijie') ;
end loop;
--------------test sql--------------
--END IF;
END TR_TEST;
表sajet.g_Sn_Status不断由MES程式产生的新记录,但表SAJET.jackson_smt_wo中始终不见有新记录生成,
又在sql plus中手工insert into sajet.g_Sn_Status ,结果触发器触发了,SAJET.jackson_smt_wo表中
多了10000笔新记录,为什么会这样?之前测试OK的表是数据量非常少的小表,而sajet.g_Sn_Status
是多达1000多条记录的大表了(当然还有多达5、6亿的大表呢)
两表在其他上看不到有什么异同
难道有由程式新增的记录不触发触发器而在后台新增记录则可以触发呢?实在想不通,
还请各位先生教我!!!!!!!!!!!!!!!
所以转移到正式表上,SQL如下:
CREATE or replace TRIGGER TR_TEST
after INSERT
ON sajet.g_Sn_Status
referencing OLD AS OLD NEW AS NEW
FOR EACH ROW
BEGIN
--IF (:NEW.PROCESS_ID=100007) or (:NEW.PROCESS_ID=100008) THEN
--smt.smtReduce_New(:NEW.WORK_ORDER,:NEW.SERIAL_NUMBER,:NEW.EMP_ID,:NEW.MODEL_ID,:NEW.PDLINE_ID);--------------test sql--------------
for i in 1..10000 loop
INSERT INTO SAJET.jackson_smt_wo(WORK_ORDER)
VALUES('houruijie') ;
end loop;
--------------test sql--------------
--END IF;
END TR_TEST;
表sajet.g_Sn_Status不断由MES程式产生的新记录,但表SAJET.jackson_smt_wo中始终不见有新记录生成,
又在sql plus中手工insert into sajet.g_Sn_Status ,结果触发器触发了,SAJET.jackson_smt_wo表中
多了10000笔新记录,为什么会这样?之前测试OK的表是数据量非常少的小表,而sajet.g_Sn_Status
是多达1000多条记录的大表了(当然还有多达5、6亿的大表呢)
两表在其他上看不到有什么异同
难道有由程式新增的记录不触发触发器而在后台新增记录则可以触发呢?实在想不通,
还请各位先生教我!!!!!!!!!!!!!!!
解决方案 »
- 各位大侠帮我看看这段代码,stmt->executeUpdate()不执行
- [求助]建一个存储过程
- java连接oracle报异常,Io 异常: Got minus one from a read call
- 这两个语句的查询结果一样吗?
- oracle 在UNIX备份
- 【在线等】oracle 10g 如何更改安装语言?
- 1000分征求oracle数据库对于海量数据的存储、查询解决方案
- Oracle9i 在windows2003上安装的问题
- 急急急!!关于ORA-01403: 未找到数据的错误
- 一个SELECT 语句问题,急等!!!!!!!!!!!
- oracle 复杂 列求和
- 不解,你的库会是这样么?
即:
declare
PRAGMA AUTONOMOUS_TRANSACTION --自治事务
.触发器sql code 全部贴出来了,奇怪,同一个db在其他table上是测试OK的,(即 在此触发器中将表名改为其他表名,其余全部不变)各位先生教我!!!
CREATE or replace TRIGGER TR_TEST
after update
of process_id
ON sajet.g_Sn_Status
referencing OLD AS OLD NEW AS NEW
FOR EACH ROW
BEGIN
--IF (:NEW.PROCESS_ID=100007) or (:NEW.PROCESS_ID=100008) THEN
--------------test sql--------------
for i in 1..10000 loop
INSERT INTO SAJET.jackson_smt_wo(WORK_ORDER)
VALUES('houruijie') ;
end loop;
--------------test sql--------------
END IF;
END TR_TEST;