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

Khóa một hàng MySQL INNODB trong PHP

$mysqli->autocommit(FALSE);
$mysqli->query("BEGIN;");
$mysqli->multi_query("SELECT id FROM links WHERE id > (SELECT value FROM meta WHERE name='scan' FOR UPDATE) LIMIT 1000;UPDATE meta SET value=value+1000 WHERE name='scan';");
$mysqli->commit();

Đó là một vấn đề phức tạp; khóa và cấp độ giao dịch, nhưng điều kỳ diệu ở trên là BEGIN bản tường trình. Không có nó, mỗi câu lệnh đang chạy ở cấp độ giao dịch riêng của nó và FOR UPDATE khóa đã được mở quá sớm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Số lượng lớn các cột trong Cơ sở dữ liệu MySQL

  2. Chuyển đổi phân trang mysqli thành phân trang câu lệnh chuẩn bị

  3. Dịch các thuộc tính quan hệ từ sơ đồ ER sang SQL

  4. cách trả về mysql select dưới dạng một mảng mảng trong json bằng php

  5. cách sử dụng LIKE với tên cột