Điều này tạo ra một giá trị tổng hợp ẩn danh:
select (1, 'a');
Ví dụ:
=> select (1, 'a');
row
-------
(1,a)
(1 row)
=> select row(1, 'a');
row
-------
(1,a)
(1 row)
Lưu ý rằng đó là một giá trị tổng hợp duy nhất, không phải nhiều giá trị.
Từ hướng dẫn sử dụng tốt:
8.16.2. Đầu vào giá trị tổng hợp
Để viết giá trị tổng hợp dưới dạng hằng số chữ, hãy đặt các giá trị trường trong dấu ngoặc đơn và phân tách chúng bằng dấu phẩy. Bạn có thể đặt dấu ngoặc kép xung quanh bất kỳ giá trị trường nào và phải làm như vậy nếu nó chứa dấu phẩy hoặc dấu ngoặc đơn.
[...]
ROW
cú pháp biểu thức cũng có thể được sử dụng để xây dựng các giá trị tổng hợp. Trong hầu hết các trường hợp, cách sử dụng này đơn giản hơn đáng kể so với cú pháp chuỗi-ký tự vì bạn không phải lo lắng về nhiều lớp trích dẫn. Chúng tôi đã sử dụng phương pháp này ở trên:ROW('fuzzy dice', 42, 1.99) ROW('', 42, NULL)
ROW
từ khóa thực sự là tùy chọn miễn là bạn có nhiều hơn một trường trong biểu thức, vì vậy những trường này có thể đơn giản hóa thành:('fuzzy dice', 42, 1.99) ('', 42, NULL)
Công cụ tạo hàng cũng có thể được quan tâm.
Khi bạn nói điều này:
INSERT INTO circuit (id_circuit, description, date_start, date_end, speed,
length, duration)
SELECT (...)
FROM segment seg, wgs cir where seg.id = 13077
SELECT
của bạn mệnh đề chỉ có một cột như toàn bộ (...)
biểu thức đại diện cho một giá trị duy nhất. Giải pháp là chỉ cần bỏ các dấu ngoặc đơn đó:
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