CREATE TABLE table_orjinal as select 1 a,2 b from dual
select * from table_orjinal
CREATE TABLE table_backup as select * from table_orjinal where 1=2;
select * from table_backup
CREATE or REPLACE trigger t_backup
BEFORE INSERT OR DELETE OR UPDATE ON table_orjinal
FOR EACH ROW
ENABLE
BEGIN
IF INSERTING THEN
INSERT INTO table_backup (a,b) VALUES (:NEW.a,:NEW.b);
ELSIF DELETING THEN
DELETE FROM table_backup WHERE a =:old.a and b =: old.b;
ELSIF UPDATING THEN
UPDATE table_backup
SET a =:new.a WHERE a =:old.a and b =: old.b;
END IF;
END;输出
错误:触发T_BACKUP
行/Col: 4/5 PL/ SQL : SQL语句被忽略
Line/Col: 4/17 PL/SQL: ORA-00942: table或view不存在
行/Col: 8/5 PL/ SQL : SQL语句被忽略
Line/Col: 8/17 PL/SQL: ORA-00942: table或view不存在
行/Col: 12/5 PL/ SQL : SQL语句被忽略
行/Col: 12/12 PL/SQL: ORA-00942:不存在表或视图
发布于 2021-07-08 13:16:57
我在你的一些台词里加了几个分号,我相信它会给你提供更少的不。错误。你可以调试更多,一旦你没有。误差减少
CREATE TABLE table_orjinal as select 1 a,2 b from dual;
select * from table_orjinal;
CREATE TABLE table_backup as select * from table_orjinal where 1=2;
select * from table_backup;
CREATE or REPLACE trigger t_backup
BEFORE INSERT OR DELETE OR UPDATE ON table_orjinal
FOR EACH ROW
ENABLE
BEGIN
IF INSERTING THEN
INSERT INTO table_backup (a,b) VALUES (:NEW.a,NEW.b);
ELSIF DELETING THEN
DELETE FROM table_backup WHERE a =:old.a and b := old.b;
ELSIF UPDATING THEN
UPDATE table_backup
SET a =:new.a WHERE a =:old.a and b := old.b;
END IF;
END;https://stackoverflow.com/questions/68302263
复制相似问题