4

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

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;
4

1 回答 1

6

在 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;
于 2013-11-16T18:07:45.607 回答