Как вставить значение в столбец идентичности в PostgreSQL 11.1 - PullRequest
0 голосов
/ 16 апреля 2019

Я хотел бы вставить свое собственное значение в столбец идентификаторов.

Схема таблицы:

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

Дайте мне знать, если у вас есть какое-либо решение.

1 Ответ

2 голосов
/ 16 апреля 2019

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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...