问题:
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');
就可以成功运行啦。
这样的问题就是如果表已建立,必须把原表删除再创建,暂时还没找到直接的方法,以后发现再来补上