Задать вопрос
@TemaKam

Почему postgre sql при INSERT требует вводить значения ключевого поля?

допустим запрос
INSERT INTO abonents
VALUES ('Petrov', 'Pobeda 9, 1', '8909999231')

не хочет выполняться на таблице
oxjKUDt.jpg
где ключевое поле создавалось как: bilet_number integer GENERATED ALWAYS AS IDENTITY

так вот, почему при вставке требует это поле?
UGrGeyj.jpg
если укажу конкретные столбцы в INSERT, то нормально
а чтобы без указания можно было бы так добавлять - возможно сделать?
в MS SQL было возможно
  • Вопрос задан
  • 150 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@galaxy
Он требует не ключевое поле, а просто поле. При INSERT без указания названий полей надо в VALUES передавать значения для всех колонок.
а чтобы без указания можно было бы так добавлять - возможно сделать?

можно
INSERT INTO abonents
VALUES (DEFAULT, 'Petrov', 'Pobeda 9, 1', '8909999231')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Можно без DEFAULT, следует только перечислить имена колонок, которые Вы вставляете:
CREATE TABLE abonents (
	id serial,
  	name varchar(64),
  	address varchar(64),
  	phone varchar(64)
);

INSERT INTO abonents (name, address, phone) VALUES ('Petrov', 'Pobeda 9, 1', '8909999231');

SELECT * FROM abonents;


PostgreSQL fiddle
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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