ORACLE中如何实现自增字段:(1)第一种方法
ORACLE一般的做法是同时使用序列和触发器来生成一个自增字段.
CREATE SEQUENCE SEQname
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
/
CREATE TRIGGER TRGname
BEFORE INSERT ON table_name
REFERENCING
NEW AS :NEW
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.FIELDname
FROM DUAL;
End;(2)第二种方法:
CREATE OR REPLACE TRIGGER TR1
BEFORE INSERT ON temp_table
FOR EACH ROW
declare
com_num NUMBER;
BEGIN
SELECT MAX(ID) INTO COM_NUM FROM TEMP_TABLE;
:NEW.ID:=COM_NUM+1;
END TR1;
ORACLE一般的做法是同时使用序列和触发器来生成一个自增字段.
CREATE SEQUENCE SEQname
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
/
CREATE TRIGGER TRGname
BEFORE INSERT ON table_name
REFERENCING
NEW AS :NEW
FOR EACH ROW
Begin
SELECT SEQname.NEXTVAL
INTO :NEW.FIELDname
FROM DUAL;
End;(2)第二种方法:
CREATE OR REPLACE TRIGGER TR1
BEFORE INSERT ON temp_table
FOR EACH ROW
declare
com_num NUMBER;
BEGIN
SELECT MAX(ID) INTO COM_NUM FROM TEMP_TABLE;
:NEW.ID:=COM_NUM+1;
END TR1;
解决方案 »
- Oracle 如何设置不区分大小写查询(索引,全表扫描)?
- 郁闷,安装了Oracle客户端(oracle-client),但是桌面上的启动图标不小心删除了,请问这个启动程序图标在哪个目录下啊
- oracle Rman 异机数据备份和恢复问题???
- 装了oracle 10g后,每次开机都会自动运行它。
- 请教一个plsql的日期转换成字符串的问题!着急啊!
- 求助:oracle监听服务自关闭的解决办法
- 这个job为什么不运行?我想使它每分钟运行一次.
- oracle的sys密码默认是什么?
- 请问一下 ORA-02042:这个问题
- 这样的句子该如何写?
- 菜鸟急问:如何导入导出Oracle整个数据库的结构及数据??立刻结分!!
- 请问如何合并数据库中相同的数据
select sequenceID.nextval into :new fieldID from dual
end
begin
select sequenceID.nextval into :new.fieldID from dual;
end
BEFORE INSERT ON table_name
REFERENCING
NEW AS :NEW
FOR EACH ROW
Begin
-- SELECT SEQname.NEXTVAL INTO :NEW.FIELDname FROM DUAL;
-- 去掉了原来的语句
INSERT INTO table_name(FIELDname) VALUES(SEQname.NEXTVAL);
End;这样改了之后,效果是不是更好一些?
CREATE TRIGGER TRGname
BEFORE INSERT ON table_name
REFERENCING
NEW AS :NEW
FOR EACH ROW
Begin
-- SELECT SEQname.NEXTVAL INTO :NEW.FIELDname FROM DUAL;
-- 去掉了原来的语句
new.FIELDname = SEQname.NEXTVAL;
End;