首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同一表上的Oracle update触发器

同一表上的Oracle update触发器
EN

Stack Overflow用户
提问于 2018-03-04 06:57:17
回答 2查看 830关注 0票数 0

当同一个表中的某些行被更新时,我想更新字段data_aktualizacji。我创建了以下复合触发器。

代码语言:javascript
运行
复制
CREATE OR REPLACE TRIGGER oferta_update_trigger
FOR UPDATE ON oferty
compound TRIGGER
  id_oferty number(10);

  AFTER EACH ROW IS
    BEGIN
      id_oferty := :new.idk;
  END AFTER EACH ROW;

  AFTER STATEMENT IS
    BEGIN
      UPDATE oferty SET data_aktualizacji = SYSDATE WHERE idk = id_oferty;
  END AFTER STATEMENT;
END;
/

当我想要更新一些记录时,我得到了以下错误。

代码语言:javascript
运行
复制
SQL Error: ORA-00036: maximum number of recursive SQL levels (50) exceeded.

如何解决这个问题?我认为创建了一些循环,但我不知道如何解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-04 07:52:09

更新oracle以将列更改为默认的sysdate

代码语言:javascript
运行
复制
Alter table oferty alter column data_aktualizacji set default sysdate

根本不需要触发器

票数 1
EN

Stack Overflow用户

发布于 2018-03-05 18:37:28

正如Ctznkane525所写的,您绝对应该使用default-value来执行此操作。

如果不想使用default,可以修改new.data_aktualizacji

代码语言:javascript
运行
复制
CREATE OR REPLACE TRIGGER oferty_update_aktualizacji
BEFORE INSERT OR UPDATE
ON oferty
FOR EACH ROW
DECLARE
BEGIN
   :new.data_aktualizacji:= sysdate;
END;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49090109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档