Oracle在表上建立自增字段的方法

本方法为使用SEQUENCE(序列)

例如有表temp_test结构为:

create table TEMP_TEST
(
id number,
nm varchar(10),

primary key(id)   //id为主键,下面的方法把它设为自增字段
)

1、建立自增序列TEMP_TEST_IDADD,命名任意,从1开始,每次加1

CREATE SEQUENCE TEMP_TEST_IDADD INCREMENT BY 1 START WITH
1;

2、在表temp_test上建立触发器如下

CREATE OR REPLACE TRIGGER
T_TEMP_TEST_IDADD
BEFORE INSERT ON TEMP_TEST
FOR EACH ROW
BEGIN

SELECT TEMP_TEST_IDADD.NEXTVAL INTO :NEW.ID
FROM DUAL;
END T_TEMP_TEST_IDADD;

测试效果:

往temp_test表中新增数据,执行以下语句两次

insert into TEMP_TEST(nm)
values(‘ss‘);

结果如下:

时间: 2024-07-29 08:20:24

Oracle在表上建立自增字段的方法的相关文章

Oracle数据库中,通过function的方式建立自增字段

Oracle数据库无自增字段设置,可以通过function的方式设置字段自增来作为ID. 1.创建表tSequence来存储各表的next ID. 2.创建function类似如下: 1 CREATE OR REPLACE FUNCTION "FUNC_NEXTID" 2 (tablename in varchar2) return number is 3 4 nextid number(12); 5 begin 6 begin 7 select nvl(max(id),-1) int

无法在同一张表上查询和更新的问题解决方法

一.问题引入 要在一张已存在并且有数据的表上建一个唯一索引,由于建索引的这列有很多重复的数据,导致无法建unique索引!要一条条数据手工删除吗?不!我是工程师,我要用技术的手段删除重复数据.写了一个删除重复数据的sql,如下: delete from entity_tag where id not in (select max(id) from entity_tag group by code ) 写完了,十分兴奋的跑一下这个sql,结果大跌眼镜 [语句1]: delete from enti

js表单建立必填字段

在填写表单时可能希望用户必须填写某些字段或者两段填写的字段相匹配,然后才能提交表单,这里就可以用js来实现 下面是建立一个基础表单的HTML代码 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset = "utf-8"> 5 <title>Password check</title> 6 <link rel="stylesheet" typ

oracle的表空间建立

pctfree,pctused,initrans,maxtrans pctfree  当一个块的使用空间达到100-pctfree值时,这个块从自由列表脱离.比如pctfree为10,那么当这个块使用90%的时候将会脱离freeelist,后续的insert将不会用到这个block.  如果一张表中的数据插入后经常需要进行DML,那么我们须要把PCTFREE参数设置的大一些,以避免行迁移和行链接的现象出现.如果一张表插入数据后不做修改和删除,那么我们是不是可以把PCTFREE设置的小一些,比如5

oracle修改表名、列名、字段类型、添加表列、删除表列

ALTER TABLE SCOTT.TEST RENAME TO TEST1--修改表名ALTER TABLE SCOTT.TEST RENAME COLUMN NAME TO NAME1 --修改表列名ALTER TABLE SCOTT.TEST MODIFY NAME1 NUMBER(20) --修改字段类型ALTER TABLE SCOTT.TEST ADD ADDRESS VARCHAR2(40) --添加表列ALTER TABLE SCOTT.TEST DROP NAME CASCAD

oracle 创建表,增加修改删除字段

创建表 create table test (id varchar2(20) not null); 增加一个字段 alter table test add (test01 varchar2(30) default '无名氏' not null); 修改一个字段 alter table test modify (test01 varchar2(16) default '无名氏' not null); 删除一个字段 alter table test drop column test01 ; 重命名表

SQL笔试题:在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是&quot;b002&quot;,就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)

CREATE TRIGGER TR_BORROW ON BORROWAFTER INSERTASIF((SELECT I.BNO FROM INSERTED I) in(SELECT BNO FROM BOOKS WHERE BNAME='b002'))BEGININSERT BORROW_SAVESELECT * FROM INSERTED IPRINT '已经备份该记录'ENDELSEBEGINPRINT '未备份该记录'END

对数据库里所有表的自增字段初始化

对数据库存储过程还不是很熟练,一时半会还写不出函数,所以就干脆用php写了个程序. 十几个数据库,每个库里都有几百张表,数据全部被清空了,但是表里的自增字段的值却还是保留着原表里的,要全部一次性的还原到初始值,若是一个表一个表的修改,不知道要改到猴年马月. //在系统库查询需要修改的数据库的表名称 $sysDbName="information_schema"; $dbarray=array("db1","db2","db3"

Oracle之表空间、索引、管理权限及角色

Oracle表空间 表空间是数据库的逻辑组成部分,从物理上讲,数据库数据存放在数据文件中 从逻辑上讲,数据库则是存放在表空间中,表空间由一个或多个数据文件组成 数据库的逻辑结构 oracle中逻辑结构包括表空间.段.区和块 说明一下数据库由表空间构成,而表空间又是由段构成,而段又是由区构成,而 区又是由oracle块构成的这样的一种结构,可以提高数据的效率 表空间用于从逻辑上组织数据库的数据.数据库逻辑上是由一个或是多个表空间组成的 通过表空间可以达到以下作用: 1.控制数据库占用的磁盘空间 2