Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để kiểm tra một câu lệnh SQL Update trước khi chạy nó?

Điều gì về Giao dịch? Chúng có Tính năng ROLLBACK.

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

Ví dụ:

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

Câu trả lời cho câu hỏi từ @rickozoe bên dưới:

Nói chung, các dòng này sẽ không được thực hiện một lần. Trong PHP f.e. bạn sẽ viết một cái gì đó như thế (có lẽ sạch hơn một chút, nhưng muốn trả lời nhanh;-)):

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

Một cách khác là sử dụng Biến MySQL (xem https:/ /dev.mysql.com/doc/refman/5.7/en/user-variables.htm đất https://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;

Nhưng tôi khuyên bạn nên sử dụng các trình bao bọc ngôn ngữ có sẵn trong ngôn ngữ lập trình yêu thích của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm khoảng trống ngày với mysql

  2. Làm thế nào để đồng bộ cơ sở dữ liệu SQLite trên điện thoại Android với cơ sở dữ liệu MySQL trên máy chủ?

  3. Sử dụng Cơ sở dữ liệu quan hệ MySQL trên Debian 6 (Bóp)

  4. PHP - Sử dụng PDO với mảng mệnh đề IN

  5. Lưu trữ thông tin đăng nhập MySQL trong tập lệnh PHP ở đâu?