【发布时间】:2011-02-28 16:26:54
【问题描述】:
我一直在寻找一种在 Oracle 中定义自动增量数据类型的方法,并在 Stack Overflow 上找到了这些问题:
使用自动增量类型的方法在于定义一个序列和一个触发器以使插入透明,其中插入触发器看起来像这样:
create trigger mytable_trg
before insert on mytable
for each row
when (new.id is null)
begin
select myseq.nextval into :new.id from dual;
end;
我对这个触发器的行为有些怀疑:
- 当提供的“id”值与 NULL 不同时,此触发器会做什么?
- “新”前的冒号是什么意思?
我希望触发器以序列的下一个值作为 ID 插入新行,无论提供的“new.id”值是什么。我想 WHEN 语句使触发器仅在提供的 ID 为 NULL 时才插入新行(否则它不会插入或失败)。
我是否可以删除 WHEN 语句,以便触发器始终使用序列的下一个值插入?
【问题讨论】:
标签: sql oracle triggers auto-increment types