oracle实现id自增和设置主键
2016-07-15 15:53
302 查看
1、关于主键:在建表时指定primary key字句即可:
create table test(
id number(6) primary key,
name varchar2(30)
);
如果是对于已经建好的表,想增加主键约束,则类似语法:
alter table test add constraint pk_id primary key(id);
其中add constraint 和 primary key是关键字,pk_id是主键名称,自定义的额,只要不重复即可。
2、关于id自增功能,也很简单,而且比较灵活。
(1)首先建立一个序列(就是每次查询会自动增加值的绝不重复的对象,比如每次加1或每次加10)。
语法:
CREATE SEQUENCE 序列名
[INCREMENT BY n] --每次加几
[START WITH n] --序列从几开始
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --最小值、最大值的限制
比如CREATE SEQUENCE s_test start with 1 increment by 1; --就是建立了额一个从1开始每次加1的序列。
访问序列时,用 序列名称.nextval的语法。
比如对于上表,如果想要id字段实现自增。则在每次插入记录时,使用下面类似的语法(前提是表和序列已经建好)。
insert into test values (s_test.nextval,'张三');
当然,你也可以自动一些,对表的插入操作,建立一个触发器,每当有数据插入时,触发器自动修改id值为序列的新值,这样就完全实现自增id功能了。不过其实也没有这个必要。因为触发器如果建多了,有时会比较混乱,不易管理。
create table test(
id number(6) primary key,
name varchar2(30)
);
如果是对于已经建好的表,想增加主键约束,则类似语法:
alter table test add constraint pk_id primary key(id);
其中add constraint 和 primary key是关键字,pk_id是主键名称,自定义的额,只要不重复即可。
2、关于id自增功能,也很简单,而且比较灵活。
(1)首先建立一个序列(就是每次查询会自动增加值的绝不重复的对象,比如每次加1或每次加10)。
语法:
CREATE SEQUENCE 序列名
[INCREMENT BY n] --每次加几
[START WITH n] --序列从几开始
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --最小值、最大值的限制
比如CREATE SEQUENCE s_test start with 1 increment by 1; --就是建立了额一个从1开始每次加1的序列。
访问序列时,用 序列名称.nextval的语法。
比如对于上表,如果想要id字段实现自增。则在每次插入记录时,使用下面类似的语法(前提是表和序列已经建好)。
insert into test values (s_test.nextval,'张三');
当然,你也可以自动一些,对表的插入操作,建立一个触发器,每当有数据插入时,触发器自动修改id值为序列的新值,这样就完全实现自增id功能了。不过其实也没有这个必要。因为触发器如果建多了,有时会比较混乱,不易管理。
相关文章推荐
- oracle 备份单张表
- Oracle使用Mybatis实现List批量插入数据
- Oracle expdp/impdp导出导入命令及数据库备份
- Oracle SCN与检查点
- oracle 死锁现象重现,查询及处理
- oracle数据库时间转换
- ORA-00001
- 使用wrap和unwrap加密解密Oracle的PL/SQL对象(包,存储过程,函数等)代码
- 关于oracle命令行上下左右键无法使用解决办法
- oracle 删除(所有)约束 禁用(所有)约束 启用(所有)约束
- oracle 删除表里重复数据
- oracle中查询某张表的大小
- Oracle 字符集的查看和修改
- 处理oracle基于时间点恢复报错一例
- Oracle数据库使用PDE文件导出数据和传统EXP/IMP方式的区别
- ORACLE的日志挖掘 logminer
- oracle 导出的insert语句过长 运行插入错误的解决
- 恢复oracle 中误删的表 或delete 删掉的数据恢复
- ORACLE 如何查看索引重建进度情况
- Oracle自动导入数据文件(类似bcp的功能)及问题记录SQL*LOADER-704,ORA-12504