postgres: вставка массива пользовательского типа - PullRequest
0 голосов
/ 25 марта 2020

У меня есть:


CREATE TYPE Person AS (given_name VARCHAR,
                       family_name VARCHAR);
CREATE TYPE Contributors AS (directors person[],
                             actors person[]) ;
CREATE TABLE Catalogue (id serial, contributors Contributors)

И я хочу вставить следующий литерал массива в поле contributors таблицы каталога:

({},{(Song,Kang-ho),(Omar,Sharif)})

через JDB C Значение PGobject у водителя, но мне трудно это сделать.

Я столкнулся с этим вопросом , и я вроде понимаю проблему.

Я попытался сделать следующее:

({}, "{(Song,Kang-ho),(Omar,Sharif)}")

, но получил:

ОШИБКА: искаженный литерал записи: "(Композиция" Подробно: неожиданный конец ввода.

, поэтому я попытался:

'({},"{(Song,Kang-ho),(Omar,Sharif)}")'

, а также:

'({},"{'(Song,Kang-ho)','(Omar,Sharif)'}")'

, но я получаю эту ошибку:

ОШИБКА : неправильный литерал записи: .... Деталь: отсутствует левая скобка.

Какой синтаксис использовать для вложенных полей строк внутри литерала массива?

1 Ответ

1 голос
/ 25 марта 2020

Трудно понять, что вы на самом деле пытаетесь, так как вы показываете только часть утверждения, и неясно, где показанная вами часть вписывается в целое.

Это работает:

insert into catalogue values  (1,('{}', '{"(Song,Kang-ho)","(Omar,Sharif)"}'));

Так же это:

insert into catalogue values  (1,'({},"{""(Song,Kang-ho)"",""(Omar,Sharif)""}")');
...