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

Bagaimana cara menguji pernyataan Pembaruan SQL sebelum menjalankannya?

Bagaimana dengan Transaksi? Mereka memiliki Fitur ROLLBACK.

@lihat https://dev.mysql.com/doc/refman /5.0/en/commit.html

Misalnya:

START TRANSACTION;
SELECT * FROM nicetable WHERE somthing=1;
UPDATE nicetable SET nicefield='VALUE' WHERE somthing=1;
SELECT * FROM nicetable WHERE somthing=1; #check

COMMIT;
# or if you want to reset changes 
ROLLBACK;

SELECT * FROM nicetable WHERE somthing=1; #should be the old value

Jawaban pertanyaan dari @rickozoe di bawah ini:

Secara umum baris-baris ini tidak akan dieksekusi sekali. Dalam PHP f.e. Anda akan menulis sesuatu seperti itu (mungkin sedikit lebih bersih, tetapi ingin menjawab dengan cepat;-) ):

$MysqlConnection->query('START TRANSACTION;');
$erg = $MysqlConnection->query('UPDATE MyGuests SET lastname='Doe' WHERE id=2;');
if($erg)
    $MysqlConnection->query('COMMIT;');
else
    $MysqlConnection->query('ROLLBACK;');

Cara lain adalah dengan menggunakan Variabel MySQL (lihat https:// /dev.mysql.com/doc/refman/5.7/en/user-variables.htm tanahhttps://stackoverflow.com/a/18499823/1416909 ):

# do some stuff that should be conditionally rollbacked later on

SET @v1 := UPDATE MyGuests SET lastname='Doe' WHERE id=2;
IF(v1 < 1) THEN
    ROLLBACK;
ELSE
    COMMIT;
END IF;

Tapi saya sarankan untuk menggunakan pembungkus bahasa yang tersedia dalam bahasa pemrograman favorit Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java - Cara mendapatkan nama Kolom di Kumpulan Hasil

  2. Bagaimana cara mendapatkan fungsi SUM di MySQL untuk mengembalikan '0' jika tidak ada nilai yang ditemukan?

  3. Ambil Nilai Unik dan Hitungan Untuk Setiap

  4. Bagaimana cara terhubung ke MySQL menggunakan UTF8 dalam skrip Perl?

  5. MySQL &Java - Dapatkan id dari nilai yang dimasukkan terakhir (JDBC)