每插入一条数据就自动增长...以前那个好用了的.不知道换了数据库...在使用就不好用了...这是我的表.seq_id想让他是自动增长列
create table bug(
seq_id number,
pc_id varchar2 (8),
desc_cont varchar2 (200),
bug_date date,
bug_cont varchar2 (200),
bug_state varchar2 (1),
bug_type varchar2 (2),
res varchar2 (200),
finishdate date,
pc_type varchar2 (2),
bug_ip varchar2 (20)
); ALTER TABLE bug ADD (
CONSTRAINT bug PRIMARY KEY (seq_id)
);________________________________
这是以前建立sequences的语句
create sequence Sequence_bug
increment by 1
start with 1
事务语句
create trigger tib_bug before insert
on bug for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean; begin
select Sequence_bug.NEXTVAL INTO :new.seq_id from dual;
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;为什么上面建立以后不好用了....哪位大侠...看看..再改改...顺便把插入语句sql...写一个看看...
create table bug(
seq_id number,
pc_id varchar2 (8),
desc_cont varchar2 (200),
bug_date date,
bug_cont varchar2 (200),
bug_state varchar2 (1),
bug_type varchar2 (2),
res varchar2 (200),
finishdate date,
pc_type varchar2 (2),
bug_ip varchar2 (20)
); ALTER TABLE bug ADD (
CONSTRAINT bug PRIMARY KEY (seq_id)
);________________________________
这是以前建立sequences的语句
create sequence Sequence_bug
increment by 1
start with 1
事务语句
create trigger tib_bug before insert
on bug for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean; begin
select Sequence_bug.NEXTVAL INTO :new.seq_id from dual;
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;为什么上面建立以后不好用了....哪位大侠...看看..再改改...顺便把插入语句sql...写一个看看...
但可以建一个自动增长的序列
create sequence SEQ_test
minvalue 1000000000000001
maxvalue 9999999999999999
start with 1000000000000001
increment by 1
cache 20;
然后在表中插记录的时候去取这个序列的下一个值insert into table (col)value(seq_test.nexval);
这样应该可以达到你的要求
在你做INSERT的时候
是先触发触发器呢,还是先触发主键检查呢?
insert into bug (seq_id,pc_id) values (Sequence_bug.NEXTVAL,'2')
insert into bug (seq_id,pc_id) values (Sequence_bug.NEXTVAL,'2')
应该是这样的,不过好像还缺少了commit;语句拉,可能这样才导致你看不到结果吧
不能不单独吧这个seq_id插入的Sequence_bug.NEXTVAL非要写上吗?插入的时候...他自己不能自动增加吗?做的事务不是做的这样的操作吗
=================================
oracle 自增列的实现不同于 sql server,sql server 靠列的 identity 属性来实现,可以在 insert 后自动增长,oracle 靠 sequence 类型的数据库对象来实现,而 sequence 是在用 nextval 函数取值后自动增长。
应该是这样bug (seq_id,pc_id) 表中的字段一般是主键
Sequence_bug.NEXTVAL,'2' 要插入的值
Sequence_bug.NEXTVAL 这个是序列对表进行插入后回自动的增加
create or replace trigger tri_test
before insert on 表名
for each row
declare
tempnum number;
begin
select 序列号.nextval into tempnum from dual;
:new.表名自增字段名 := tempnum;
end tri_test;例如:
create or replace trigger tri_rr_tastchange
before insert on rr_tastchange
for each row
declare
tempnum number;
begin
select seq_rr_tastchange.nextval into tempnum from dual;
:new.tc_id := tempnum;
end tri_rr_tastchange;
插入时不用再管自增长的列
insert into bug (pc_id) values ('1');