Oracle里如何实现自增长字段?(100分)

  • 主题发起人 主题发起人 csz
  • 开始时间 开始时间
C

csz

Unregistered / Unconfirmed
GUEST, unregistred user!
类似SqlServer的自增长id,在添加新记录的时候自动将该字段值填充
我建立了Sequence,然后用Trigger来实现该功能
可是试了很多次都总是失败,该怎么写Trigger呢?
有知道的朋友请回复,请写出具体trigger的create语句,多谢了~

附:
先建Sequence
create Sequence SeqBbs increment by 1
start with 1

下面是Trigger
create trigger Tr_ID
before Insert
on Table
begin
insert into Table(F_Id) values(sqlbbs.nextval);
end;

在执行数据集Add和Update的时候Update出错:(

 
试试在前台写,我一般都这样做
 
应该这样写:
create or replace trigger test
before insert on cert_logon
for each row
declare
v_ID number;
begin
select SEQ_CERT_LOGON.nextval into v_ID from dual;
:New.id := v_ID;
end test;
 
不好意思我是刚接触Oracle数据库的,对它的语法还不是很熟,这里的
:New.id 是什么意思?我在编译的时候提示说这行出错
[1]: Statement processed in 0.05 sec with warnings
[1]: (Warning) PLS-00049: 错误的赋值变量 'NEW.ID'

请xiaojun继续解答
 
哪位兄弟能帮我~~救救我这可怜的人儿吧,哎。。
 
NEW是代表你新增的记录,ID是你的字段命
。。。。。
就好像sqlserve 的INSERTED和DELETEED表类似,在ORACLE是用NEW和OLD...
 
建立一个最小为1,最大为999999999的一个序列号会自动循环的序列
create sequence 序列名
increment by 1
start with 1
maxvalue 999999999
cycle;

当向表中插入数据时,SQL语句写法:
SQL> insert into 表名 values(序列名.nextval,列1值,列2值);

easy...................
 
如果我要添加的字段很多,用insert添加记录太恐怖了,Sql语句巨长,尤其是在asp里写
所以我才考虑用trigger,因为想用AddNew,然后update,呵呵
 
oracle 有隐含的自增长字段 rowid
 
我把'NEW.ID'改成“NEW.F_ID”就对了,F_ID是我的id字段名称

多谢各位的关注,问题已经解决

rowid的内容oracle编码,内容如AAAGpOAADAAAPNjAAA,这个不能做为number类型的值

尤其感谢xiaojun和mbobo,各位均有分~多谢~~:)

 

Similar threads

后退
顶部