我几周前才开始学习 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;
在 Oracle 的触发器语法中,新插入的记录由:new
, not 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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)