Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否正在创建Oracle触发器,以便在更新时将单个记录复制/插入到新表中?_Sql_Database_Oracle_Oracle11g_Toad - Fatal编程技术网

Sql 是否正在创建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.] 有人知道怎么设置

我试图在Oracle数据库中设置一个触发器,每当
表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
,查看是否显示实际问题。您正在使用模式而不是基表来限定触发器和插入,这可能是根本问题。