经过以下三步就可以在表里新建一个自增长的字段了。感觉oracle居然没有一个比较方便的定义方式来建自增长字段实在有点不科学。。或许是我孤陋寡闻了?
1.新建表
--
```sql
create table trade_msg(
id integer primary key, --需要自增长的字段
track_id varchar2(16),
grp_id varchar2(6),
message varchar2(200),
flag varchar2(2),
create_time date
);
```
2.新建sequence
--
```
CREATE sequence SEQ_ID minvalue 1 maxvalue 99999999 start with 1 increment BY 1 nocache ORDER;
```
3.新建触发器
--
```
CREATE OR REPLACE TRIGGER tri_test_id before
INSERT ON trade_msg --触发器要建在相应的表上
FOR EACH row DECLARE nextid NUMBER;
BEGIN
IF :new.id --对应表里需要自增长的字段
IS
NULL or :new.id=0 THEN
SELECT SEQ_ID.nextval
INTO nextid FROM sys.dual;
:new.id:=nextid;
END IF;
END tri_test_id;
```
作者:sylarinfo
出处:博客园sylarinfo的技术博客--http://www.cnblogs.com/sylarinfo/
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文如未在开头表明转载,则版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。