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

mysql_insert_id alternatif untuk postgresql

Dari sudut pandang PostgreSQL, dalam kode semu:

 * $insert_id = INSERT...RETURNING foo_id;-- only works for PostgreSQL >= 8.2. 

 * INSERT...; $insert_id = SELECT lastval(); -- works for PostgreSQL >= 8.1

 * $insert_id = SELECT nextval('foo_seq'); INSERT INTO table (foo...) values ($insert_id...) for older PostgreSQL (and newer PostgreSQL)

pg_last_oid() hanya berfungsi di mana Anda memiliki OID. OID telah dinonaktifkan secara default sejak PostgreSQL 8.1.

Jadi, tergantung pada versi PostgreSQL yang Anda miliki, Anda harus memilih salah satu metode di atas. Idealnya, tentu saja, gunakan perpustakaan abstraksi database yang mengabstraksikan hal-hal di atas. Jika tidak, dalam kode tingkat rendah, akan terlihat seperti:

Metode satu:MASUKKAN... KEMBALI

// yes, we're not using pg_insert()
$result = pg_query($db, "INSERT INTO foo (bar) VALUES (123) RETURNING foo_id");
$insert_row = pg_fetch_row($result);
$insert_id = $insert_row[0];

Metode dua:INSERT; lastval()

$result = pg_execute($db, "INSERT INTO foo (bar) values (123);");
$insert_query = pg_query("SELECT lastval();");
$insert_row = pg_fetch_row($insert_query);
$insert_id = $insert_row[0];

Metode tiga:nextval(); MASUKKAN

$insert_query = pg_query($db, "SELECT nextval('foo_seq');");
$insert_row = pg_fetch_row($insert_query);
$insert_id = $insert_row[0];
$result = pg_execute($db, "INSERT INTO foo (foo_id, bar) VALUES ($insert_id, 123);");

Taruhan paling aman adalah metode ketiga, tetapi itu berat. Yang terbersih adalah yang pertama, tetapi Anda harus menjalankan PostgreSQL terbaru. Kebanyakan perpustakaan abstraksi db belum menggunakan metode pertama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. simpan hasil postgresql dalam variabel bash

  2. Menghilangkan PostgreSQL Split-Brain di Database Multi-Cloud

  3. Menyiapkan kunci asing dengan tipe data yang berbeda

  4. Bagaimana saya bisa mengirim beberapa permintaan http dari fungsi atau pemicu postgresql

  5. PostgreSQL + Hibernate + Spring otomatis membuat database