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