永发信息网

oracle数据库触发器无效且未通过重新确认

答案:3  悬赏:70  手机版
解决时间 2021-11-20 06:34
  • 提问者网友:我的未来我做主
  • 2021-11-19 22:55
oracle数据库触发器无效且未通过重新确认
最佳答案
  • 五星知识达人网友:逐風
  • 2021-11-20 00:16
目测,  你是在用 SQL Server 数据库的语法,  在 Oracle 上面写触发器啊......

CREATE TABLE a (
  objcode  INT,
  objstate INT
);


CREATE TABLE b (
  objcode  INT,
  objstate INT
);

INSERT INTO a VALUES( 1, 100);
INSERT INTO b VALUES( 1, 100);


CREATE OR REPLACe TRIGGER tr_a_Update
  BEFORE UPDATE OF objstate ON a
FOR EACH ROW
BEGIN
  UPDATE b 
  SET objstate = :NEW.objstate
  WHERe objcode = :OLD.objcode;
END;
/

触发器已创建

SQL> 
SQL> UPDATE a SET objstate = 200 WHERe objcode = 1;

已更新 1 行。

SQL> 
SQL> SELECT * FROM a;

   OBJCODE   OBJSTATE
---------- ----------
         1        200

SQL> 
SQL> SELECt * FROM b;

   OBJCODE   OBJSTATE
---------- ----------
         1        200
全部回答
  • 1楼网友:罪歌
  • 2021-11-20 02:21
after update这后面要跟对应的表名称,要不然它怎么知道你是update谁?追问create trigger a_update
after update on a
begin
if update(objstate)
begin
update b set state = inserted.objstate where objcode = insered.objcode
end
end
报错:触发器无效且未通过重新确认
  • 2楼网友:我住北渡口
  • 2021-11-20 01:09
if update(objstate) then
begin
update b set state = inserted.objstate where objcode = insered.objcode;
end;
end if ;追问这么改了,还是不行啊,错误依旧
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯