SQL设置自增主键

这篇具有很好参考价值的文章主要介绍了SQL设置自增主键。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、自增主键

当表中字段无法充当主键或者无法设置联合主键时,可以考虑用自增序号设置主键
前提表中需要先创建一个id字段,用于充当主键,然后再进行以下操作

1、创建序列

Name规范   seq_表名称_字段名称
CREATE SEQUENCE   seq_fct_mgt_index_det_id  -- 序列名称
START WITH 1I
NCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;

参数含义介绍:

start with 表示这个序列从什么地方开始,这里表示从1开始。
increment by 表示每次的增长幅度,可为正可为负,这里表示每次增长1。
MINVALUE 表示这个序列能产生的最小值,这里表示没有最小值。(注意最小值是有范围的,序列是基于bigint算法的,因此范围是不能超过一个八字节整数的范围(-92233720368547758089223372036854775807)
MAXVALUE 表示这个序列能产生的最大值,这里表示没有最大值。(同上最大值也是有范围的)
CACHE 指定要预分配多少 个序列数并且把它们放在内存中以便快速访问。最小值为 1 (一次只生成 一个值,即没有缓存),
默认值也是 1

2、先创建表,再为表的主键字段指定约束

alter table 表名称  alter column 字段名 set default nextval('序列名称');
alter table fct_mgt_index_det alter column id set default nextval('seq_fct_mgt_index_det_id');    

– 这里注意使用英文符号

3、删除序列

drop sequence seq_fct_mgt_index_det_id  CASCADE;

4、重置序列起始值

– 序列重置到1000文章来源地址https://www.toymoban.com/news/detail-546257.html

alter sequence 序列名称 restart with 1000

5、验证

SELECT nextval('seq_v_mdl_quiz_attempts_id');

二、SQL用户权限问题

(1)授权

grant all privileges on sequence seq_fct_mgt_index_det_id to tiger_user; 

(2)撤销权限

revoke all privileges on sequence seq_fct_mgt_index_det_id from tiger_user; 

到了这里,关于SQL设置自增主键的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot~mybatis中使用selectKey获取自增主键

    在mybatis中,我们在insert操作之后,可以获取到自增主键的值,这个需要我们用到 这个方法,在使用时有一个坑需要注意,一会儿会说到。 假设我们有数据表id_offset,然后id是自增主键 我们在插入数据后,希望得到这个新插入的主键的值 我们不希望通过两条语句实现,因为这

    2024年02月14日
    浏览(41)
  • Hibernate适配DM数据库主键自增配置

    hibernate有多种生成主键策略,例如assigned、increment、hilo、seqhilo、sequence、identity、native、uuid、guid等方法,其中native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强。如果能支持identity则使用identity,如果支持sequence则使用

    2023年04月24日
    浏览(47)
  • mysql高并发下主键自增打来的问题

    在一般情况下,在新增领域对象后,都需要获取对应的主键值。使用应用层来维护主键,在一定程度上有利于程序性能的优化和应用移植性的提高。在采用数据库自增主键的方案里,如果JDBC驱动不能绑定新增记录对应的主键,就需要手工执行查询语句以获取对应的主键值,对

    2024年02月13日
    浏览(37)
  • 如何在Insert插入操作之后,获取自增主键的ID值

    MyBatis中,在大多数情况下,我们向数据库中插入一条数据之后,并不需要关注这条新插入数据的主键ID。我们也知道,正常在DAO中的插入语句虽然可以返回一个int类型的值,但是这个值表示的是插入影响的行数,而不是新插入数据的主键ID。 近期有一个需求,核心是保存一些

    2024年02月09日
    浏览(49)
  • mybatis实战:四、insert 用法(普通插入、返回主键自增的值)

    1.UserMapper.xml 1.指定特殊数据类型 2.<insert >元素,这个标签包含如下属性  2. UserMapperTest  1.只插入一条数据 2.回滚(不写入数据库) 3.插入后判断是否为空(为空/不为空,抛异常) 3.UserMapper 方法一: 使用 JDBC 方式返回主键自增的值  方法二: 使用 selectKey 返回主键的值

    2024年02月07日
    浏览(47)
  • mysql如何自定义自增主键值,以及所遇到的不生效问题

    最近有一个需求,要求对某些数据的数据库主键id格式化,要求id为(202311080000)的形式去自增,可以在get请求获取到这些数据时在请求路径上看到格式化的id,但是之前数据id有大于202311080000数值的,导致自增的主键值并没有生效(即使删除相关数据) 如何自定义自增主键值 第一种通过命

    2024年04月15日
    浏览(39)
  • 面试官:MySQL 自增主键一定是连续的吗?大部分人都会答错!

    MySQL版本:8.0 数据库表:T (主键id,唯一索引c,普通字段d) 如果你的业务设计依赖于自增主键的连续性,这个设计假设自增主键是连续的。但实际上,这样的假设是错的,因为自增主键不能保证连续递增。 推荐一个开源免费的 Spring Boot 实战项目: https://github.com/javastacks

    2024年02月06日
    浏览(41)
  • mysql中删除数据后,新增数据时id会跳跃,主键自增id不连续

    引言: 在使用MySQL数据库时,有时候我们需要删除某些记录,但是删除记录后可能会导致表中的id不再连续排序。 如何实现删除记录后让id重新排序的功能。 如图: 删除数据后,中间的id不会自动连续。 下面有两种方法进行重新排序: 方法一: 删除表中id,重新添加id字段:

    2024年02月20日
    浏览(46)
  • SQL语句中的主键和外键

    1.1)主键字段定义: 在数据库表中,如果有一组字段能够 唯一 确定一条记录,则可以把它们设计成表的主键字段。 例子:如果要创建一个人的信息表( 字段 :姓名,年龄,籍贯,工作单位......),那么身份证号是唯一能确定你这个人的,所以身份证号是主键。 1.2) 创建:

    2023年04月08日
    浏览(42)
  • SQL语句 -非空约束 - 唯一约束 - 主键约束 - 默认约束 -外键约束

    约束的概念 : 约束是作用于表中列上的规则,用于限制加入表的数据 约束的存在保证了数据库中数据的正确性、有效性和完整性 约束的分类如下 : 约束名称 描述 非空约束 保证列中所有数据不能有null值 NOT NULL 唯一约束 保证列中所有数据各不相同 UNIQUE 主键约束 主键

    2024年01月16日
    浏览(93)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包