Dit construeert een anonieme samengestelde waarde:
select (1, 'a');
Bijvoorbeeld:
=> select (1, 'a');
row
-------
(1,a)
(1 row)
=> select row(1, 'a');
row
-------
(1,a)
(1 row)
Merk op dat dit een enkele samengestelde waarde is, niet meerdere waarden.
Uit de fijne handleiding:
8.16.2. Samengestelde waarde invoer
Om een samengestelde waarde als een letterlijke constante te schrijven, plaatst u de veldwaarden tussen haakjes en scheidt u ze door komma's. U kunt dubbele aanhalingstekens rond elke veldwaarde plaatsen, en u moet dit doen als deze komma's of haakjes bevat.
[...]
DeROW
expressiesyntaxis kan ook worden gebruikt om samengestelde waarden te construeren. In de meeste gevallen is dit aanzienlijk eenvoudiger te gebruiken dan de letterlijke tekenreekssyntaxis, omdat u zich geen zorgen hoeft te maken over meerdere lagen aanhalingstekens. We hebben deze methode hierboven al gebruikt:ROW('fuzzy dice', 42, 1.99) ROW('', 42, NULL)
De
ROW
trefwoord is eigenlijk optioneel zolang u meer dan één veld in de uitdrukking heeft, dus deze kunnen worden vereenvoudigd tot:('fuzzy dice', 42, 1.99) ('', 42, NULL)
De Rijconstructeurs sectie kan ook interessant zijn.
Als je dit zegt:
INSERT INTO circuit (id_circuit, description, date_start, date_end, speed,
length, duration)
SELECT (...)
FROM segment seg, wgs cir where seg.id = 13077
uw SELECT
clausule heeft slechts één kolom als de hele (...)
expressie vertegenwoordigt een enkele waarde. De oplossing is om die haakjes gewoon weg te laten:
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