自动给号,在Oracle中,是通过序号+触发器来实现的建一个序列create sequence a_seq increment by 1 start with 100;建一个触发器create or replace trigger t_abefore insert on afor each rowbeginselect s_a.nextval into :new.b from dual;end;
解决方案 »
- 请高手帮忙
- 存储过程和内嵌SQL语句的销量差距有多大?
- oracle 中 sysdate 不改名,怎么进行正确sql 查询,有语句如下:
- 数据库问题!
- 【如何实现】任意 同构表 之间的数据备份和恢复
- 紧急求救:我得oracle9i随便输入什么用户名密码,只要以SYSDBA身份,则都可以登陆,为什么?
- 为什么我从access导出到oracle的表,在oracle中没有?
- 关于存储过程的怪事.通过存储过程insert的记录刷新一下就没了.
- Enterprise Manager中怎么没有Configuration Assistant?
- 如何将数据库变化内容实时通知应用程序
- 2个表之间的批量update问题!急。。。。。
- 哪位大侠有ORACLE8I或9I的Z版CD出售,请联系[email protected]
http://community.csdn.net/Expert/topic/3704/3704133.xml?temp=.4912683
http://community.csdn.net/Expert/topic/3704/3704133.xml?temp=.4912683
CREATE SEQUENCE "SH"."AA" INCREMENT BY 1 START WITH 1 MAXVALUE
1.0E28 MINVALUE 1 NOCYCLE
CACHE 20 NOORDER在触发器中写:
insert into table1 values(aa.nextval.....)
CREATE SEQUENCE seq_name
INCREMENT BY 1
START WITH 1
MINVALUE 1
MAXVALUE 999999999
CYCLE
NOORDER
CACHE 50
/
使用序列:
SELECT LTRIM(TO_CHAR(seq_name.NEXTVAL,'000000000')) INTO v_var FROM DUAL;
插入数据时
SELECT ID INTO V_ID FROM ID_TB WHERE ROWNUM = 1 FOR UPDATE;
INSERT INTO TABLE_NAME(ID,...) VALUES(V_ID,...);
UPDATE SET ID_TB ID = ID+1;
COMMIT;