id主键自增长那些事
来源:互联网 发布:亲爱的你可知网络歌手 编辑:程序博客网 时间:2024/05/22 06:16
create sequence seq_id start with 1;
很多id 爱好者 喜欢在新建数据库表时,先添加id number字段,为了方便插入数据,尤喜欢将id设为自增字段。
那么几天在前辈的经验之上总结一下那些能使字段自增的方法
一、Sequence
Sequence是数据库系统按照一定规则自动增加的数字序列。我们一般将此序列看做代理主键。要使用它的筒靴们要注意它所存在的数据库有:Oracle、DB2、PostgreSQL。
而很多人熟悉的MySQL、SQL Server则没有此序列。
以Oracle内的Sequence为例说明其使用方法:
1.定义Sequence
定义一个seq_test,最小值为100000 ,最大值为600000,从101000开始,增量为1,缓存为20的循环排序Sequence
create sequence seq_test minvalue 100000 maxvalue 600000 start with 101000 increment by 1 catch 20 cycle order;
2.Sequence使用
Oracle等数据库Sequence的引用参数为currval、nextval,分别表示当前id和下一个id
select seq_test.nextval from dual;表示查询下一个id值
这样若有表User,字段有id(number)、username(varchar)、age(number),当保存新数据时 可以SQL这样写:
insert into User(id,username,age)values(seq_test.nextval,'qiyue',23);
看得出序列是独立于表的存在。
当然,如果你的id没有限制的话,可以这样写
create sequence seq_id start with 1;
二、indetity
indetity可以被定义为指定的自增属性,即只在其所在表有效,是依附于表的存在。
1. DB2
生成列和标识列
generated by default as identity
generated always as identity
两种不同的的定义方式,从字面意思可看出第一种在插入数据时允许手工指定自增字段的值,只要不重复,数据库会在下次存放数据时自动设置下一个值
第二种则只能由数据库自动分配并插入。
举例说明:
create table User(id int generated by default as identity,username char)
当指定插入default时,id为自增,从1开始
create table User(id int generated always as identity ,username char )
这种方式只能指定插入default,如果指定id的值将会出错
2. MYSQL
create table table1(id int auto_increment primary key,username char(30));
默认id从1开始自增
如果你已建表且主键未自增,删除主键,使用添加语句使表自增:
alter table table2 add id int auto_increment primary key;
一定要设置为主键,当前最大值当然是max(id)。
插入数据的时候不需对自增字段设值,如
insert into table1(username)values('qiyue');
3. SQLServer
create table testtable1(id int IDENTITY,department varchar(12) ) select * from testtable1 insert into testtable1 values('设计') insert into testtable1 values('市场') insert into testtable1 values('售后') /*结果 id department 1 设计 2 市场 3 售后 */
如果你要新建的表id有初始值 则表示为:id int identity(初始值,增量);
- id主键自增长那些事
- id主键自增长那些事
- 设置 user 表主键 id 自增长
- Oracle 数据主键id自增长
- DB2主键自增长设置(id自增)
- mysql 主键id自增长,插入数据的方法
- 注解实现hibernate 主键ID自增长生成策略
- oracle中创建表主键id依据sequence自增长
- 如何查询自增长的主键id的值
- SQLite 获取最新插入数据的自增长主键ID
- oracle中创建表主键id依据sequence自增长
- 主键自增长和自增长后插入记录的返回的id
- oracle主键自增长
- oracle 自增长主键
- oracle 自增长主键
- 主键自增长
- oracle主键自增长
- mysql 主键自增长
- Struts2 实现上传附件(支持多附件)
- 自己开发能在asp.net项目正常使用的定时器WebTimer,让定时器听话起来
- Java框架学习笔记——写在开始之前
- 关于火狐在<td>中不支持使用position:relative
- hdu 1398 Square Coins
- id主键自增长那些事
- N皇后问题_hdu_2553
- VS2010 编译出现 FileTracker : error FTK1011
- 舍伍德(Sherwood)算法学习笔记
- 由“2013软考之不完美结果”来剖析自己的学习方式误区
- extern用法详解
- 堆和栈的区别
- UVA165
- ACM - 暑期第十三天:联接整数