Ini membangun nilai komposit anonim:
select (1, 'a');
Misalnya:
=> select (1, 'a');
row
-------
(1,a)
(1 row)
=> select row(1, 'a');
row
-------
(1,a)
(1 row)
Perhatikan bahwa itu adalah nilai gabungan tunggal, bukan beberapa nilai.
Dari manual yang bagus:
8.16.2. Masukan Nilai Gabungan
Untuk menulis nilai komposit sebagai konstanta literal, lampirkan nilai bidang dalam tanda kurung dan pisahkan dengan koma. Anda dapat menempatkan tanda kutip ganda di sekitar nilai bidang apa pun, dan harus melakukannya jika berisi koma atau tanda kurung.
[...]ROW
sintaks ekspresi juga dapat digunakan untuk membangun nilai komposit. Dalam kebanyakan kasus, ini jauh lebih sederhana untuk digunakan daripada sintaks string-literal karena Anda tidak perlu khawatir tentang beberapa lapisan kutipan. Kami sudah menggunakan metode ini di atas:ROW('fuzzy dice', 42, 1.99) ROW('', 42, NULL)
ROW
kata kunci sebenarnya opsional selama Anda memiliki lebih dari satu bidang dalam ekspresi, sehingga ini dapat disederhanakan menjadi:('fuzzy dice', 42, 1.99) ('', 42, NULL)
Konstruktor Baris bagian mungkin juga menarik.
Saat Anda mengatakan ini:
INSERT INTO circuit (id_circuit, description, date_start, date_end, speed,
length, duration)
SELECT (...)
FROM segment seg, wgs cir where seg.id = 13077
SELECT
klausa hanya memiliki satu kolom sebagai keseluruhan (...)
ekspresi mewakili nilai tunggal. Solusinya adalah dengan menghapus tanda kurung tersebut:
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