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

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; 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值