我想在身份列中插入自己的值。
表架构:
CREATE TABLE public.userdetail (
userdetailid int4 NOT NULL GENERATED ALWAYS AS IDENTITY,
username varchar(30) NOT NULL,
"password" varchar(1000) NOT NULL,
CONSTRAINT pk_userdetail PRIMARY KEY (userdetailid)
);
插入查询:
INSERT INTO UserDetail (UserDetailId,UserName, Password)
VALUES(1,'admin', 'password');
此处插入查询引发以下错误:
无法插入“ userdetailid”列
是否存在任何强制插入到身份列的命令,例如MS SQL:
SET IDENTITY_INSERT UserDetail ON
让我知道您是否有解决方案。
答案 0 :(得分:2)
GENERATED ALWAYS
告诉Postgres始终为标识列生成值。如果您尝试在这样的列中插入值,Postgres将抛出错误。
如果要插入,可以使用以下查询
INSERT INTO UserDetail (UserName, Password)
VALUES('admin', 'password');
如果您确实要插入“身份”列,则可以使用GENERATED BY DEFAULT
代替GENERATED ALWAYS
。在这种情况下,如果您没有为标识列提供值,则Postgres将使用生成的值。
或
您可以如下使用OVERRIDING SYSTEM VALUE
INSERT INTO UserDetail (UserDetailId,UserName, Password)
OVERRIDING SYSTEM VALUE
VALUES(1,'admin', 'password');