openGauss字段自动递增

问题:

user表结构:
在这里插入图片描述
在运行INSERT INTO "user" (username,password)VALUES ('xx','123456');时出现报错:

[ERROR]执行失败
错误代码:[0]SQL错误码:=23502
ERROR:null value in column "id" violates not-null constraint
Detail:Failing row contians (null,xx,123456).

想实现的结果是运行代码后id字段自动实现递增。

解决方法:

1.先创建一个序列
    START是开始的数。
    INCREMENT 指定序列的步长。一个正数将生成一个递增的序列,一个负数将生成一个递减的序列,缺省值为1
    CACHE在内存中预先存储序列号的个数(缺省值为1,表示一次只能生成一个值,也就是没有缓存)

CREATE SEQUENCE sq_user_id
 START 1 
 INCREMENT 1
 CACHE 20; 

2.在创建字段后面加上DEFAULT nextval('sq_user_id')

SET search_path = public;
CREATE  TABLE "user" (
	id integer NOT NULL DEFAULT nextval('sq_user_id'),
	username character varying,
	password character varying
)
WITH (orientation=row, compression=no);
COMMENT ON COLUMN "user".id IS 'ID';
COMMENT ON COLUMN "user".username IS '用户名';
COMMENT ON COLUMN "user".password IS '密码';
ALTER TABLE "user" ADD CONSTRAINT user_id_key UNIQUE (id);

要拿到原表的创建语句可以右键数据表 -> 显示DDL

然后再执行INSERT INTO "user" (username,password)VALUES ('xx','123456');就可以成功运行啦。

这样的问题就是如果表已建立,必须把原表删除再创建,暂时还没找到直接的方法,以后发现再来补上

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值