В PostgreSQL 10.3 я пробовал следующие два сценария.
1.
CREATE TYPE customtype AS (val VARCHAR(20));
CREATE TABLE structdatatable(id INTEGER, structdata customtype);
Затем выполнил следующий оператор вставки.
INSERT INTO structdatatable VALUES(1, ('abc'));
Это приводит кследующая ошибка.
DETAIL: Missing left parenthesis.
2.
CREATE TYPE customtype2 AS (val VARCHAR(20), val2 VARCHAR(20));
CREATE TABLE structdatatable2(id INTEGER, structdata customtype2);
Затем выполняется следующий оператор вставки.
INSERT INTO structdatatable2 VALUES(1, ('abc','def'));
Это успешно выполняется со следующим выводом.
INSERT 0 1
Также я выполнил оператор select для проверки.Ниже приводится результат.
id | structdata
----+------------
1 | (abc,def)
(1 row)
Что вызывает такое поведение?