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

Cara menyisipkan beberapa baris menggunakan fungsi di PostgreSQL

Fungsi yang Anda miliki seharusnya:

CREATE FUNCTION insertdata(varchar(10),varchar(40)) 
  RETURNS VOID AS 
$$ 
   INSERT INTO mahasiswa(col_name1, col_name2)
   VALUES ($1,$2); 
$$ 
LANGUAGE sql STRICT;
  • Jangan mengutip nama bahasa. Ini adalah pengenal.

  • Selalu berikan daftar target dengan pernyataan tetap. Jika tidak, jika nanti Anda mengubah definisi tabel, fungsi tersebut dapat berperilaku dengan cara yang tidak terduga.

  • Jangan pernah menggunakan char(n) , kecuali Anda tahu apa yang Anda lakukan. Saya hanya menggunakan text .

Untuk menyisipkan beberapa baris , Anda dapat mengambil array tipe komposit atau dua array dengan jumlah elemen yang sama untuk membongkar secara paralel. Mendemonstrasikan yang terakhir:

CREATE FUNCTION insertdata(_arr1 text[], _arr2 text[]) 
  RETURNS VOID AS 
$$ 
   INSERT INTO mahasiswa(col_name1, col_name2)
   SELECT unnest(_arr1), unnest(_arr2);
$$ 
LANGUAGE sql STRICT;

Telepon:

SELECT insertdata ('{1234567890,0987654321}', '{Nahrun,Hartono}');

Saya lebih suka menggunakan fungsi plpgsql dan memeriksa apakah jumlah elemen sama di kedua array untuk mencegah kesalahan. Gunakan array_length(arr1, 1) ...

Postgres 9.4 atau lebih baru ...

... memperkenalkan varian baru unnest yang menerima banyak larik secara paralel - tanpa kebiasaan peretasan di atas (tidak pernah default ke CROSS JOIN )

   INSERT INTO mahasiswa(col_name1, col_name2)
   SELECT * FROM unnest(_arr1, _arr2);  -- must be in FROM list



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat terhubung ke server postgres di buruh pelabuhan dari aplikasi buruh pelabuhan

  2. Gunakan output teks dari fungsi sebagai kueri baru

  3. Simpan dan ambil gambar di Postgresql menggunakan Java

  4. Postgresql dan jsonb - memasukkan kunci/nilai ke dalam array multi-level

  5. PostgreSQL:Paralelisme Kueri dalam Tindakan