#postgresql
#postgresql
Вопрос:
я получаю эту ошибку при попытке вставить в таблицу «hotel»: ОШИБКА: не удается привести запись типа к СТРОКЕ 4 камеры: строка (массив[(250, ‘2 место’,300),(200… ^ ПОДРОБНО: Не удается преобразовать тип record[] в integer в столбце 1.
create type chambre as(
numChambre INTEGER ,
typeChambre VARCHAR(30),
prix REAL);
create table hotel (
nom VARCHAR(30),
Adresse adresse,
positions positions,
Chambres chambre[],
nbPersonnel INTEGER,
nbEtoile INTEGER,
telephone VARCHAR(14));
insert into hotel values( 'president',
row(26,'maraval','oran'),
row(27.5,136),
row(array[(250,'2 place',300),(200,'1 place',250),
(300,'suite',700)]),
60,
4,
'041-45-86-28');
Ответ №1:
Вы не предоставили подробную информацию о позициях adresse, но, конечно, вам не понадобится ROW
конструктор ни для одного из них.
Для Chambres
просто приведите созданное вами выражение массива к chambre[]
. Рекомендуется всегда явно указывать имена столбцов в INSERT
инструкции, чтобы избежать путаницы.
INSERT INTO hotel
(
nom,
adresse,
positions,
chambres,
nbpersonnel,
nbetoile,
telephone
)
VALUES
(
'president',
(26,'maraval','oran'),
(27.5,136),
array[(250,'2 place',300),(200,'1 place',250),(300,'suite',700)] :: chambre[],
60,
4,
'041-45-86-28'
);