1,在触发器调用的存储过程中能否动态创建表。
2,我在一个表pp_data的insert after上建了触发器以向历史表中备份数据,如果当前历史表不存在,则动态创建,如pp_data200408,在向里面插入数据,大约1分钟500条记录。
是插入速度太快,建表来不急的原因吗?
2,我在一个表pp_data的insert after上建了触发器以向历史表中备份数据,如果当前历史表不存在,则动态创建,如pp_data200408,在向里面插入数据,大约1分钟500条记录。
是插入速度太快,建表来不急的原因吗?
你应当在触发器中加上例外处理,把错误信息保存下来(sqlcode,sqlerrm)
看看到底是什么错误
PRAGMA AUTONOMOUS_TRANSACTION;
就可以了。注意这时是自治事务。
...
FUNCTION balance (acct_id INTEGER) RETURN REAL;
END banking;CREATE PACKAGE BODY banking AS
...
FUNCTION balance (acct_id INTEGER) RETURN REAL IS
PRAGMA AUTONOMOUS_TRANSACTION;
my_bal REAL;
BEGIN
...
END;
END banking;In the example below, you a database trigger as autonomous. Unlike regular triggers, autonomous triggers can contain transaction control statements. CREATE TRIGGER parts_trigger
BEFORE INSERT ON parts FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO parts_log VALUES(:new.pnum, :new.pname);
COMMIT; -- allowed only in autonomous triggers
END;