Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pengeditan Basis Data dengan Persetujuan - mysql

Kami memiliki sesuatu yang serupa di salah satu situs kami, kami telah menambahkan banyak tabel:

users sites ... dll

Kemudian kami memiliki banyak tabel bayangan:

users-shadow sites-shadow ... dll

Tabel bayangan memiliki struktur yang identik dengan tabel sebenarnya kecuali untuk baris tambahan untuk pengguna yang membuat perubahan. Jadi pertama-tama kita menggunakan kueri ini saat perubahan diajukan oleh pengguna yang perlu tindakan databasenya disetujui:

REPLACE INTO users-shadow (user_mod,id,username,password,salt...) VALUES (16,50,'bob','stuff','salt'...);

Jelas, pastikan ini tidak terbuka untuk injeksi, gunakan pernyataan yang disiapkan dll.

Saat disetujui, baris di shadow tabel hanya dihapus dari shadow tabel, user_mod nilai turun dan perubahan (nilai non-null) dimasukkan ke dalam tabel nyata (atau diperbarui jika id ditentukan, menggunakan GANTI sintaksis). Kami melakukan logika ini di Perl jadi sayangnya tidak ada SQL yang tersedia untuk itu.

Ingat bahwa SQL REPLACE melakukan DELETE dan INSERT daripada UPDATE . Anda perlu mengubah pemicu apa pun untuk memungkinkan perilaku ini.

Catatan:Alasan kami tidak menggunakan tanda 'menyetujui' adalah karena kami memerlukan kemampuan untuk mengubah catatan yang ada, tentu saja kami tidak dapat memiliki beberapa catatan dengan kunci utama yang sama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. masukkan mysql jika tidak ada tanpa kunci unik

  2. Bagaimana cara menghindari string di pdo?

  3. mengekspor data besar yang dapat didata ke file .csv di aplikasi c# windows

  4. Cara mereset/mengubah baris perintah kata sandi root MySql di ubuntu linux

  5. Data Varchar menunjukkan hasil secara selektif