Това създава анонимна съставна стойност:
select (1, 'a');
Например:
=> select (1, 'a');
row
-------
(1,a)
(1 row)
=> select row(1, 'a');
row
-------
(1,a)
(1 row)
Имайте предвид, че това е една съставна стойност, а не множество стойности.
От финото ръководство:
8.16.2. Съставно въвеждане на стойноста
За да напишете съставна стойност като литерална константа, оградете стойностите на полето в скоби и ги разделете със запетаи. Можете да поставите двойни кавички около всяка стойност на полето и трябва да го направите, ако съдържа запетаи или скоби.
[...]ROW
синтаксисът на изразите може също да се използва за конструиране на съставни стойности. В повечето случаи това е значително по-лесно за използване от синтаксиса на низовия литерал, тъй като не е нужно да се притеснявате за множество слоеве на цитиране. Вече използвахме този метод по-горе:ROW('fuzzy dice', 42, 1.99) ROW('', 42, NULL)
ROW
ключовата дума всъщност не е задължителна, стига да имате повече от едно поле в израза, така че те могат да опростят до:('fuzzy dice', 42, 1.99) ('', 42, NULL)
Конструкторите на редове раздел може също да представлява интерес.
Когато кажете това:
INSERT INTO circuit (id_circuit, description, date_start, date_end, speed,
length, duration)
SELECT (...)
FROM segment seg, wgs cir where seg.id = 13077
вашият SELECT
клаузата има само една колона като целия (...)
изразът представлява една стойност. Решението е просто да пуснете тези скоби:
INSERT INTO circuit (id_circuit, description, date_start, date_end, speed, length, duration)
SELECT seg.id_segment, ..., (seg.date_end - seg.date_start)
FROM segment seg, wgs cir where seg.id = 13077