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
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
报错:触发器无效且未通过重新确认
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 ;追问这么改了,还是不行啊,错误依旧
begin
update b set state = inserted.objstate where objcode = insered.objcode;
end;
end if ;追问这么改了,还是不行啊,错误依旧
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯