@sirinotapple

Как запретить ввод в таблицу пустого поля?

Здравствуйте, у меня
CREATE TABLE myTable (id BIGSERIAL NOT NULL PRIMARY KEY, firstName VARCHAR(50), lastName VARCHAR(50));
INSERT INTO myTable (id, firstName, lastName) VALUES (1, 'field', 'anotherField');
SELECT * FROM myTable;
6240c72ae2cec224620618.jpeg
Но я почемуто могу
INSERT INTO myTable(lastName) VALUES('upsertedLastNameOnly orger');
(хотя id NOT NULL)
и даже
INSERT INTO myTable(lastName) VALUES('upsertedLastNameOnly orger') ON CONFLICT (id) DO UPDATE SET lastName = EXCLUDED.lastName;

не обновляет поле а просто добавляет без id
Как сделать так чтоб нельзя было вводить пустой id в запрос или пропускать его
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
@galaxy
Где вы увидели пустой id?

BIGSERIAL - равносильно полю типа BIGINT с DEFAULT значением из автоматически создаваемого сиквенса (сделайте \d+ myTable в psql для интереса), так что если вы не указываете значение для id в INSERT, оно берется из сиквенса.
По этой же причине
INSERT INTO myTable(lastName) VALUES('upsertedLastNameOnly orger') ON CONFLICT (id)
не имеет смысла, т.к. конфликта по id тут быть не может.

В общем, что конкретно вы хотите? Поле id у вас заполняется и не может быть пустым
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы