用触发器更改插入的值

时间:2013-11-16 17:44:06

标签: oracle plsql database-trigger

几周前我刚刚开始学习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;

1 个答案:

答案 0 :(得分: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;