Oracle 使用触发器更改插入值

Oracle 使用触发器更改插入值,oracle,plsql,database-trigger,Oracle,Plsql,Database Trigger,几周前我刚刚开始学习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; E

几周前我刚刚开始学习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;
创建或替换触发器号码簿
插入前
在书上
每行
开始
如果是new.nobook<10
然后
设置new.nobook=10;
如果结束;
结束;

在Oracle的触发器语法中,新插入的记录指的是
:new
,而不是
new
(注意冒号)。此外,
SET
是update语句的一部分,不是设置字段值的方法-这些都是通过简单的赋值来完成的,但请注意,这些赋值是通过
:=
而不是
=
完成的。
因此,触发器应为:

创建或替换触发器号码簿
插入前
在书上
每行
开始
IF:new.nobook<10
然后
:new.nobook:=10;
如果结束;
结束;

您遇到了什么错误?错误(8,9):PL/SQL:ORA-00922:缺少或无效选项,并且设置了new.nobook=10下划线非常感谢!我已经编辑了代码,一切都很顺利。救生员。我需要使用
:=