Lak*_*hmi 22 oracle triggers sequences auto-increment
除了使用触发器之外,在oracle中实现自动增量的其他方法是什么?
Dhe*_*eer 18
您可以创建和使用oracle序列.语法和详细信息请访问 http://www.techonthenet.com/oracle/sequences.php
另请阅读文章 http://rnyb2.blogspot.com/2006/02/potential-pitfall-with-oracle-sequence.html 以了解其他RDBMS中有关AUTONUMBER的限制
ang*_*gus 16
如果您不需要序列号但只需要唯一ID,则可以使用DEFAULT SYS_GUID().即:
CREATE TABLE xxx ( ID RAW(16) DEFAULT SYS_GUID() )
Run Code Online (Sandbox Code Playgroud)
Ton*_*ews 11
从序列中获取下一个值的触发器是实现AUTOINCREMENT等效项的最常用方法:
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;
Run Code Online (Sandbox Code Playgroud)
如果控制插入,则不需要触发器 - 只需使用insert语句中的序列:
insert into mytable (id, data) values (myseq.nextval, 'x');
Run Code Online (Sandbox Code Playgroud)
这可以隐藏在API包中,这样调用者就不需要引用序列:
mytable_pkg.insert_row (p_data => 'x');
Run Code Online (Sandbox Code Playgroud)
但使用触发器更"透明".
据我回忆,我在 Oracle 的日子里,如果不使用 TRIGGER,就无法实现自动增量列。任何使自动增量列的解决方案都涉及触发和序列(我假设您已经知道这一点,因此没有触发备注)。
| 归档时间: |
|
| 查看次数: |
32216 次 |
| 最近记录: |