Sql 是否正在创建Oracle触发器,以便在更新时将单个记录复制/插入到新表中?
我试图在Oracle数据库中设置一个触发器,每当Sql 是否正在创建Oracle触发器,以便在更新时将单个记录复制/插入到新表中?,sql,database,oracle,oracle11g,toad,Sql,Database,Oracle,Oracle11g,Toad,我试图在Oracle数据库中设置一个触发器,每当表1中的记录更新时触发该触发器。当触发器执行(之后?)时,我想复制/插入记录中所有字段的:old记录值,该记录已更新到历史表中。这两个表之间的唯一区别是包含了一个[Table1\u ID]字段,用于引用该特定表1的所有历史记录。[ID]: [Table1] - [ID][col1][col2][col3][etc.] [HistoryTable] - [ID][Table1_ID][col1][col2][col3][etc.] 有人知道怎么设置
表1
中的记录更新时触发该触发器。当触发器执行(之后?)时,我想复制/插入记录中所有字段的:old
记录值,该记录已更新到历史表中。这两个表之间的唯一区别是包含了一个[Table1\u ID]
字段,用于引用该特定表1的所有历史记录。[ID]
:
[Table1] - [ID][col1][col2][col3][etc.]
[HistoryTable] - [ID][Table1_ID][col1][col2][col3][etc.]
有人知道怎么设置吗?我尝试按如下所示编写脚本,但迄今为止运气不佳,并且还没有弄清楚如何在TOAD
gui中准确地指定操作。我已经准备好了一个序列/触发器
对,这样每当插入新记录时,历史表
的[ID]
字段就会自动递增
CREATE OR REPLACE TRIGGER SCHEMA1.ITEM_UPDATED_TRG
AFTER UPDATE ON TABLE1
FOR EACH ROW
DECLARE
BEGIN
INSERT INTO SCHEMA1.HISTORYTABLE (Table1_ID, col1, col2, col3, etc.)
VALUES (:OLD.ID, :OLD.col1, :OLD.col2, :OLD.col3, :OLD.etc);
END;
ShOW ERRORS;
“输出”窗口将显示“警告:已编译,但有编译错误-无错误”。
…?什么是“不走运”?你有错误吗?什么错误?我觉得你的代码很合理。@JustinCave-请参阅文章末尾的其他信息。这是返回的警告全文吗?和Justin Cave一样,我认为提供的样本没有任何问题。DECLARE
是不必要的,但不应该破坏它。在create和show之间没有显示/
,但是错误似乎确实存在。您是以schema1
或其他用户(希望不是SYS)的身份连接的吗?show errors
的基本形式不能跨模式工作。您可以查询all_errors
或dba_errors
,查看是否显示实际问题。您正在使用模式而不是基表来限定触发器和插入,这可能是根本问题。