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

MYSQL, PHP Chèn vào nhiều bảng trong cơ sở dữ liệu

Vì hai lần chèn này được thực thi độc lập, một chương trình khác đang chạy đồng thời có thể thấy cơ sở dữ liệu ở trạng thái nơi lần chèn đầu tiên được thực hiện nhưng lần chèn thứ hai thì không.

Cho dù đây là một vấn đề hay không phụ thuộc vào logic ứng dụng. Trong trường hợp của bạn, thật khó để biết nếu không có thông tin bổ sung. Chắc là không. Một giao dịch tài chính liên quan đến hai tài khoản là một ví dụ cho thấy điều này vấn đề:bạn không muốn tổng tất cả số dư tài khoản bị sai bất cứ lúc nào.

Nếu bạn nghĩ rằng bạn cần điều này, bạn có thể tạo nguyên tử hoạt động với chi phí hiệu suất:một chương trình khác sẽ nhìn thấy cơ sở dữ liệu trước lần chèn đầu tiên hoặc sau lần chèn thứ hai. Nó hoạt động như thế này:

$result = FALSE;
if (mysql_query('BEGIN')) {
    if (mysql_query($query1) &&
        mysql_query($query2))
        $result = mysql_query('COMMIT'); // both queries looked OK, save
    else
        mysql_query('ROLLBACK'); // problems with queries, no changes
}

Công cụ lưu trữ phải hỗ trợ các giao dịch, tức là nó phải là InnoDB . Nếu không, điều này sẽ không hoạt động.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel thay đổi các tham số cơ sở dữ liệu tại thời điểm chạy

  2. SQL, thiếu kết thúc, nhưng tại sao?

  3. Codeigniter's insert_batch () với hàng nghìn lần chèn bị thiếu bản ghi

  4. Tôi cần lấy danh sách những người dùng đã được gửi tin nhắn trước đó (MySQL)

  5. mã php để tạo nhiều hàng với mã tùy chỉnh