开发者社区> 技术小甜> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

主键自动增长在Mysql,SqlServer,Oracle中的设置

简介:
+关注继续查看

1、把主键定义为自动增长标识符类型

在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:

create table customers(id int auto_increment primary key not null, name varchar(15));

insert into customers(name) values("name1"),("name2");

select id from customers;

以上sql语句先创建了customers表,然后插入两条记录,在插入时仅仅设定了name字段的值。最后查询表中id字段,查询结果为:

id

1

2

由此可见,一旦把id设为auto_increment类型,mysql数据库会自动按递增的方式为主键赋值。

在MS SQLServer中,如果把表的主键设为identity类型,数据库就会自动为主键赋值。例如:

create table customers(id int identity(1,1) primary key not null, name varchar(15));

insert into customers(name) values("name1"),("name2");

select id from customers;

查询结果和mysql的一样。由此可见,一旦把id设为identity类型,MS SQLServer数据库会自动按递增的方式为主键赋值。identity包含两个参数,第一个参数表示起始值,第二个参数表示增量。

2、从序列中获取自动增长的标识符

在Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给主键。例如一下语句创建了一个名为customer_id_seq的序列,这个序列的起始值为1,增量为2。

create sequence customer_id_seq increment by 2 start with 1

一旦定义了customer_id_seq序列,就可以访问序列的curval和nextval属性。

curval:返回序列的当前值

nextval:先增加序列的值,然后返回序列值

以下sql语句先创建了customers表,然后插入两条记录,在插入时设定了id和name字段的值,其中id字段的值来自于customer_id_seq序列。最后查询customers表中的id字段。

create table customers(id int primary key not null, name varchar(15));

insert into customers values(customer_id_seq.curval, "name1"),(customer_id_seq.nextval, "name2");

select id from customers;

如果在oracle中执行以上语句,查询结果为:

id

1

3




















本文转自南非蚂蚁51CTO博客,原文链接:http://blog.51cto.com/ixdba/526419 ,如需转载请自行联系原作者





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
oracle学习24-数据文件设置自扩展和监听日志文件过大处理
oracle学习24-数据文件设置自扩展和监听日志文件过大处理
0 0
oracle学习49-监听服务设置开机自启,不用一直配置监听
oracle学习49-监听服务设置开机自启,不用一直配置监听
0 0
Oracle用户操作、数据类型、表格修改、约束设置详解
Oracle用户操作、数据类型、表格修改、约束设置相关操作以及使用案例
0 0
Oracle 数据库设置最大进程数参数方法,oracle最大进程数满了处理方法,sysdba管理员登录报“maximum number of processes (150) exceeded“问题解决
Oracle 数据库设置最大进程数参数方法,oracle最大进程数满了处理方法,sysdba管理员登录报“maximum number of processes (150) exceeded“问题解决
0 0
Oracle 数据库查看具有sysdba系统权限用户,设置、重置sys用户密码
Oracle 数据库查看具有sysdba系统权限用户,设置、重置sys用户密码
0 0
Oracle 数据库用户锁定与解锁,用户锁定最大密码失败次数设置方法,ORA-28000: the account is locked问题解决方法
Oracle 数据库用户锁定与解锁,用户锁定最大密码失败次数设置方法,ORA-28000: the account is locked问题解决方法
0 0
Mac 技术篇-Oracle数据库连接工具SQL Developer启用、关闭自动提交事务,设置自动commit
Mac 技术篇-Oracle数据库连接工具SQL Developer启用、关闭自动提交事务,设置自动commit
0 0
Oracle密码复杂度设置
Oracle密码复杂度设置
1879 0
使用docker安装设置oracle
在云服务器用docker安装oracle 第一步在云服务器里安装docker ,(这里不粘代码) 官方最好的 安装手册 在这里  https://docs.docker-cn.com/engine/installation/linux/docker-ce/centos/#prerequisite.
4157 0
Confluence 6 设置 Oracle 数据库准备
请查看 Supported Platforms 页面来获得 Confluence 系统支持的 Oracle 数据库版本。你需要在安装 Confluence 之前升级你的 Oracle 数据库。
595 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
EasyDBforOracle— 基于阿里云的Oracle最佳实践
立即下载
Oracle云上最佳实践
立即下载
迁移 ORACLE 最佳实践
立即下载