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

Sqlalchemy dan PostgreSql:bagaimana cara mengatur kunci utama secara manual tanpa konflik di masa mendatang?

Saya tidak mengetahui cara yang aman dan efisien untuk melakukan apa yang Anda inginkan. Anda harus benar-benar memilih apakah Anda ingin menentukan kunci sendiri atau menggunakan kunci yang dibuat dan tetap berpegang pada satu strategi atau yang lain.

Jika Anda tidak keberatan dengan konkurensi yang buruk, Anda dapat LOCK TABLE thetable , lakukan pekerjaanmu, setval urutan pengidentifikasi tabel ke nilai bebas berikutnya setelah apa yang Anda masukkan, dan commit untuk melepaskan kunci. Namun, itu masih akan menyebabkan masalah dengan aplikasi yang secara eksplisit memanggil nextval (seperti banyak ORM) daripada membiarkan database menentukan nilai dengan menghilangkannya dari ?INSERT daftar kolom atau secara eksplisit menamakannya sebagai DEFAULT .

Kalau tidak, Anda dapat meminta kode Anda (atau fungsi pembantu PL/PgSQL) melakukan penyisipan dalam loop coba lagi yang menambah kunci dan mencoba lagi ketika mendapat kesalahan integritas. Strategi ini tidak akan berhasil jika Anda perlu melakukan lebih dari sekadar memasukkan satu per transaksi. Selanjutnya di SERIALIZABLE mode isolasi Saya rasa Anda tidak dapat melakukannya dengan PL/PgSQL, Anda harus menggunakan loop coba ulang sisi klien untuk menangani kegagalan serialisasi.

Itu ide yang buruk. Gunakan kunci yang ditentukan aplikasi secara konsisten, atau kunci yang ditentukan basis data secara konsisten. Jangan mencampur keduanya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tambahkan kolom kenaikan otomatis ke tabel yang ada yang dipesan berdasarkan tanggal

  2. PostgreSql INSERT DARI SELECT RETURNING ID

  3. Bagaimana Fungsi Radian() Bekerja di PostgreSQL

  4. Bagaimana saya bisa mengakses nilai default kolom Postgres menggunakan ActiveRecord?

  5. Aplikasi Boot Musim Semi macet di Hikari-Pool-1 - Memulai...