Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

bandingkan dan tukar atom dalam database

Apakah PK adalah kunci utama? Maka ini bukan masalah, jika Anda sudah tahu kunci utama tidak ada olahraga. Jika pk adalah kunci utama, maka ini menimbulkan pertanyaan yang jelas bagaimana apakah Anda tahu pk item yang akan didequeue...

Masalahnya adalah jika Anda tidak mengetahui kunci utama dan ingin menghapus 'tersedia' berikutnya (yaitu status =y) dan menandainya sebagai dequeued (hapus atau setel status =z).

Cara yang tepat untuk melakukan ini adalah dengan menggunakan satu pernyataan. Sayangnya sintaks berbeda antara Oracle dan SQL Server. Sintaks SQL Server adalah:

update top (1) [<table>]
set status = z 
output DELETED.*
where  status = y;

Saya tidak cukup akrab dengan klausa RETURNING Oracle untuk memberikan contoh yang mirip dengan OUTPUT SQL.

Solusi SQL Server lainnya memerlukan petunjuk kunci pada SELECT (dengan UPDLOCK) agar benar. Di Oracle, jalan yang dipilih adalah menggunakan FOR UPDATE, tetapi itu tidak berfungsi di SQL Server karena FOR UPDATE akan digunakan bersama dengan kursor di SQL .

Bagaimanapun, perilaku yang Anda miliki di pos asli tidak benar. Beberapa sesi semuanya dapat memilih baris yang sama dan bahkan semua memperbaruinya, mengembalikan item dequeued yang sama ke beberapa pembaca.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi Seribu Pemisah di oracle?

  2. Oracle SQLDeveloper di MacOS tidak akan terbuka setelah instalasi Java yang benar

  3. Perbaiki 'Aplikasi "SQLDeveloper.app" tidak dapat dibuka.'

  4. Bagaimana saya bisa membuat validasi langsung sisi server oracle apex tanpa perlu mengirimkan halaman?

  5. Atribut pesan UTL_MAIL memanggil OWA_UTIL.cellsprint procedure Oracle