一、自增主键
当表中字段无法充当主键或者无法设置联合主键时,可以考虑用自增序号设置主键
前提表中需要先创建一个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算法的,因此范围是不能超过一个八字节整数的范围(-9223372036854775808 到9223372036854775807))
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');
– 这里注意使用英文符号文章来源:https://www.toymoban.com/news/detail-546257.html
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模板网!