【问题标题】:Change inserted value with trigger使用触发器更改插入的值
【发布时间】:2013-11-30 01:26:32
【问题描述】:

几周前我刚刚开始学习 SQL,我正在尝试制作一个触发器,如果​​它小于 10,它会将插入的值更改为 10。我现在搜索了 4h,我发现了很多答案,但没有一个是好的(对我来说)。我真的不明白问题出在哪里。 这是代码:

CREATE OR REPLACE TRIGGER NumberOfBooks
BEFORE INSERT
ON Book
FOR EACH ROW
BEGIN 
  IF new.nobook < 10
  THEN
    SET new.nobook = 10;
  END IF;
  END;

【问题讨论】:

  • 你遇到了什么错误?
  • Error(8,9): PL/SQL: ORA-00922: missing or invalid option and set new.nobook = 10 加下划线

标签: oracle plsql database-trigger


【解决方案1】:

在 Oracle 的触发器语法中,新插入的记录由 :new 引用,而不是 new(注意冒号)。此外,SET 是更新语句的一部分,而不是设置字段值的方法 - 这些是通过简单的赋值完成的,但请注意,这些是通过 := 而不是 = 完成的。
所以,你的触发器应该是:

CREATE OR REPLACE TRIGGER NumberOfBooks
    BEFORE INSERT
    ON book
    FOR EACH ROW
BEGIN
    IF :new.nobook < 10
    THEN
        :new.nobook := 10;
    END IF;
END;

【讨论】:

  • 非常感谢!我已经编辑了代码,一切都很顺利。救生员。
  • 我需要使用:=
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 1970-01-01
相关资源
最近更新 更多