在同一表中发生插入/更新时触发更新特定列

杭林

我试图编写一个触发器,当用户在同一张表内插入或更新一行时,该触发器将更新一列。示例:插入用户(ID,F_NM,L_NM,EMAIL)值(“ 1”,“ John”,“ Doe”,“ [email protected]”);插入后,我要调用:更新用户集ORG ='market',其中ID ='1'。

create or replace trigger user_change
after insert or update of EMAIL on USER
for each row
declare
  NEW_ORG VARCHAR(10);
BEGIN
  CASE
    when :NEW.EMAIL like '[email protected]' then
      NEW_ORG := 'market';
    ........
  END CASE;

  UPDATE USER set ORG = NEW_ORG where ID = :NEW.ID
END;

计算新的ORG工作,但是我无法使update语句正常工作。我收到“ ORA-04091表USER正在变异,触发器/功能可能看不到它”,这是由于我同时插入/更新同一记录而引起的。尝试在触发器中添加“ pragma automation_transaction”和“ commit”,字段的插入/更新有效,但ORG不会更新。

还尝试更改为INSTEAD OF INSERT或UPDATE EMAIL,但我不断收到“ ORA-04073列列表对此触发器类型无效”

create or replace trigger user_change
instead of insert or update of EMAIL on USER

虽然我得到“ ORA-25002无法在表上创建而不是触发器”

create or replace trigger user_change
instead of insert on USER
专线小巴

当您可以在写入之前设置值时,为什么不简单地将触发器转换为之前触发器呢?这样,您无需在表上运行新的DML语句,从而避免了“变异”错误。

create or replace trigger user_change
after insert or update of email on user
for each row
begin
    if :new.email like '%@market.org.com' then
        :new.org := 'market';
    end if;
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

插入触发器后更新同一表

来自分类Dev

插入触发器后更新同一表

来自分类Dev

新行插入到同一表后,错误更新触发器

来自分类Dev

触发更新同一表中同一行的触发器时,其状态取决于其他列的值

来自分类Dev

在仅更新SQL Server 2008中同一表中的特定列之后,更新触发器中的一列

来自分类Dev

同一表上的 Oracle 更新触发器

来自分类Dev

在同一表的同一列中更新

来自分类Dev

请求:更新或插入同一表中的行

来自分类Dev

更新后的MySQL,更新同一表的datetime列

来自分类Dev

插入后触发使用来自另一个表的数据更新同一表

来自分类Dev

从同一表更新一个表的列

来自分类Dev

当将值插入/更新/删除同一表中的另一列时,如何使一列具有自动反映的值?

来自分类Dev

SQL比较同一表中的两列,并在另一表中更新

来自分类Dev

更新触发器需要引起对同一表和字段的更新

来自分类Dev

计数id,插入,然后按同一表mysql中另一列中的数字范围更新

来自分类Dev

从同一表更新相同数据

来自分类Dev

更新,然后使用存储过程插入到同一表中

来自分类Dev

根据同一表中特定记录的数量更新表

来自分类常见问题

如何基于同一表中的另一列更新列

来自分类Dev

根据MYSQL同一表中的另一列更新列中的值

来自分类Dev

从同一表的一列更新多列值

来自分类Dev

如何基于同一表中的另一列更新列

来自分类Dev

使用同一表中其他多个列的合并结果更新一列

来自分类Dev

从同一表的一列更新多列值

来自分类Dev

如何用同一表中的另一列更新列?

来自分类Dev

PostgreSQL从同一表中的另一列更新列

来自分类Dev

PL/SQL 触发器在更新或插入后更新同一个表

来自分类Dev

根据同一表的查询更新表

来自分类Dev

基于同一表的MySQL更新表

Related 相关文章

  1. 1

    插入触发器后更新同一表

  2. 2

    插入触发器后更新同一表

  3. 3

    新行插入到同一表后,错误更新触发器

  4. 4

    触发更新同一表中同一行的触发器时,其状态取决于其他列的值

  5. 5

    在仅更新SQL Server 2008中同一表中的特定列之后,更新触发器中的一列

  6. 6

    同一表上的 Oracle 更新触发器

  7. 7

    在同一表的同一列中更新

  8. 8

    请求:更新或插入同一表中的行

  9. 9

    更新后的MySQL,更新同一表的datetime列

  10. 10

    插入后触发使用来自另一个表的数据更新同一表

  11. 11

    从同一表更新一个表的列

  12. 12

    当将值插入/更新/删除同一表中的另一列时,如何使一列具有自动反映的值?

  13. 13

    SQL比较同一表中的两列,并在另一表中更新

  14. 14

    更新触发器需要引起对同一表和字段的更新

  15. 15

    计数id,插入,然后按同一表mysql中另一列中的数字范围更新

  16. 16

    从同一表更新相同数据

  17. 17

    更新,然后使用存储过程插入到同一表中

  18. 18

    根据同一表中特定记录的数量更新表

  19. 19

    如何基于同一表中的另一列更新列

  20. 20

    根据MYSQL同一表中的另一列更新列中的值

  21. 21

    从同一表的一列更新多列值

  22. 22

    如何基于同一表中的另一列更新列

  23. 23

    使用同一表中其他多个列的合并结果更新一列

  24. 24

    从同一表的一列更新多列值

  25. 25

    如何用同一表中的另一列更新列?

  26. 26

    PostgreSQL从同一表中的另一列更新列

  27. 27

    PL/SQL 触发器在更新或插入后更新同一个表

  28. 28

    根据同一表的查询更新表

  29. 29

    基于同一表的MySQL更新表

热门标签

归档