PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Untuk apa konstruktor baris digunakan?

Anda membingungkan tingkat abstraksi. Seperti yang sudah ditunjukkan oleh jawaban lain, CREATE TYPE hanya mendaftarkan jenis (gabungan / baris) dalam sistem. Sementara ROW konstruktor sebenarnya mengembalikan satu baris.

Jenis baris yang dibuat dengan ROW konstruktor tidak mempertahankan nama kolom, yang menjadi jelas saat Anda mencoba mengonversi baris ke JSON.

Saat melakukannya, ROW hanyalah kata berisik sebagian besar waktu. Dokumentasi:

Demo:

SELECT t                              AS r1, row_to_json(t)                           AS j1
     , ROW(1, 'x', NUMERIC '42.1')    AS r2, row_to_json(ROW(1, 'x', NUMERIC '42.1')) AS j2
     ,    (1, 'x', NUMERIC '42.1')    AS r3, row_to_json(   (1, 'x', NUMERIC '42.1')) AS j3
     ,    (1, 'x', '42.1')::myrowtype AS r4, row_to_json((1, 'x', '42.1')::myrowtype) AS j4
FROM (SELECT 1, 'x', NUMERIC '42.1') t;

db<>fiddle di sini
sqlfiddle

r1 dan j1 pertahankan nama kolom asli.
r2 dan j2 jangan.
r3 dan j3 adalah sama; untuk mendemonstrasikan bagaimana ROW hanya kebisingan.
r4 dan j4 membawa nama kolom dari jenis terdaftar.

Anda dapat mentransmisikan baris (rekaman) ke jenis baris terdaftar jika angka dan tipe data elemen cocok dengan jenis baris - nama kolom input diabaikan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menulis fungsi di plpgsql yang membandingkan tanggal dengan stempel waktu tanpa zona waktu?

  2. Pembagian PostgreSQL dengan nol saat memesan

  3. PostgreSQL - Cara mengonversi detik dalam bidang numerik ke HH:MM:SS

  4. Ambil postingan dari pengguna yang tidak memblokir

  5. Bagaimana membandingkan dua array dan hanya memilih elemen yang tidak cocok Di postgres