Tím se vytvoří anonymní složená hodnota:
select (1, 'a');
Například:
=> select (1, 'a');
row
-------
(1,a)
(1 row)
=> select row(1, 'a');
row
-------
(1,a)
(1 row)
Všimněte si, že se jedná o jednu složenou hodnotu, nikoli o více hodnot.
Z jemného manuálu:
8.16.2. Zadání složené hodnoty
Chcete-li zapsat složenou hodnotu jako doslovnou konstantu, uzavřete hodnoty polí do závorek a oddělte je čárkami. Kolem libovolné hodnoty pole můžete umístit dvojité uvozovky a musíte tak učinit, pokud obsahuje čárky nebo závorky.
[...]
TheROW
syntaxi výrazu lze také použít ke konstrukci složených hodnot. Ve většině případů je to podstatně jednodušší na použití než syntaxe řetězcového literálu, protože se nemusíte starat o více vrstev citací. Tuto metodu jsme již použili výše:ROW('fuzzy dice', 42, 1.99) ROW('', 42, NULL)
ROW
klíčové slovo je ve skutečnosti nepovinné, pokud máte ve výrazu více než jedno pole, takže to lze zjednodušit na:('fuzzy dice', 42, 1.99) ('', 42, NULL)
Řádkové konstruktory sekce by také mohla být zajímavá.
Když řeknete toto:
INSERT INTO circuit (id_circuit, description, date_start, date_end, speed,
length, duration)
SELECT (...)
FROM segment seg, wgs cir where seg.id = 13077
váš SELECT
klauzule má pouze jeden sloupec jako celek (...)
výraz představuje jednu hodnotu. Řešením je jednoduše vypustit tyto závorky:
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