【发布时间】:2015-03-22 15:41:12
【问题描述】:
我创建了一个触发器,它会自动将第一列的值设置为后续的阶乘数。但是,另外,我想将第二列的值设置为第一个增加 5 的值,以防插入空值。这是我现在尝试的:
create or replace trigger test_tr
before insert on myT
for each row
begin
IF :new.mNumb is null
THEN
UPDATE myT
SET mNumb = :new.tab_id + 5;
END IF;
SELECT fac(test_seq.NEXTVAL)
INTO :new.tab_id
FROM dual;
end;
但显然我错过了一些东西,因为什么也没发生,插入的 null 仍然是空的。
【问题讨论】:
-
您使用的是什么版本的 Oracle?另外,为什么要插入阶乘数字?在开始遇到数字溢出之前,您只能根据序列添加 83 行!很可能,问题在于 :new.tab_id 为空,并且 null +
仍然为空。 -
插入阶乘不是我个人的目标,这只是大学练习。为什么 tab_id 会为空?
-
我不知道;你没有提到你的数据库版本、你的表结构或任何示例数据,所以我做了一个猜测。
标签: sql oracle triggers insert null