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

Các trình kích hoạt cơ sở dữ liệu có an toàn cho các ràng buộc về tính toàn vẹn của bảng chéo không?

Câu trả lời là trình kích hoạt không an toàn .

Nó chỉ ra rằng trình kích hoạt thực sự không nhìn thấy các thay đổi không giới hạn được thực hiện trong các giao dịch khác và vượt qua mà không có lỗi. Nó có thể được chứng minh như thế này

Giao dịch 1:

START TRANSACTION;
INSERT INTO plays_in (BetID, PlayerID) VALUES (1,1); -- query A

Giao dịch 2:

START TRANSACTION;
INSERT INTO plays_in (BetID, PlayerID) VALUES (1,2); -- query B; in conflict with A, but passses

Cả hai giao dịch:

COMMIT;

Bây giờ plays_in sẽ chứa cả hai bản ghi được chèn vào mặc dù nếu A và B được thực thi trong một giao dịch duy nhất, trình kích hoạt sẽ gây ra lỗi.

Toàn bộ nguồn mẫu có thể được cung cấp tại đây



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hướng dẫn tốt về cách cập nhật cơ sở dữ liệu Mysql của bạn với một biểu mẫu PHP?

  2. Sao chép / nhân bản cơ sở dữ liệu mà không cần sử dụng mysqldump

  3. Lỗi MySQl # 1064

  4. Gán xml được tạo bởi vòng lặp while cho một biến

  5. Tạo bảng trong MySQL