国产数据库序列机制

本文介绍了达梦数据库中序列的创建、使用方法,以及主键自增的特性。序列支持手动和自动创建,而主键自增类似但不直接支持。此外,还提到了序列和主键自增的交互注意事项及SQL操作示例。
摘要由CSDN通过智能技术生成

数据库

达梦

序列:支持

主键自增:支持

使用序列

//1.创建序列
create sequence <序列名> increment by 10...;
//2.使用序列,插入时指定,或者设计表字段默认值为seq1.nextval
insert into <表名>(id,...) values(<序列名>.nextval,...);
ALTER TABLE book ALTER COLUMN id SET DEFAULT <序列名>.nextval;
//3.查看当前序列号
select <序列名>.currval;

使用主键自增

达梦的主键自增功能已经类似于序列了,可以设置起始值、步长

//1.创建表时指定主键字段、自增...
create table org_employee(
  "id" integer identity(1,1)  not null,
	primary key (id) 
);
//2.查看当前自增值
select IDENT_CURRENT('<表名>');

注意

  1. 主键设置了自增就不能使用序列,2者冲突
  2. 用户会话在第一次使用 currval之前应先使用 nextval获取序列当前值。序列规范定义

神通/金仓/瀚高

三者都是基于Postgres数据库开发的,结构都是类似的,数据库sql语句、语法也一致。

序列:支持

主键自增:不支持(内部使用的是默认序列做的实现)

使用序列

//1.1创建序列-手动
create SEQUENCE <序列名>
ALTER SEQUENCE ALM_DEVICE_ALARM_ID_SEQ  RESTART WITH 1;
//1.2创建序列-自动
//smallserial、serial、bigserial为序列号类型,他们分别对应的为int2,int4,int8类型。
//创建表结构时指定某个字段为序列号类型,数据库会自动创建序列<表名>_ID_SET
CREATE TABLE ORG_EMPLOYEE_CHANGE_LOG(
  "_ID" BIGSERIAL  NOT NULL,
PRIMARY KEY (_ID) 
);
//2.1.手动使用序列
insert into <表名>(id,...) values(<序列名>.nextval,...);
insert into <表名>(id,...) values(nextval('<序列名>'),...);
ALTER TABLE book ALTER COLUMN id SET DEFAULT nextval(<序列名>);
//2.2.自动使用序列,INSERT时如果没有给该字段赋值会默认获取对应序列的下一个值
//3.查看当前序列号
select <表名>_id_seq.CURRVAL
select currval('序列名')
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值