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

Tôi có thể cập nhật giá trị INT + 1 và trả về giá trị mới không?

Câu trả lời đơn giản - không, không thể.

Câu trả lời dài hơn, có, nếu bạn sử dụng một thủ tục được lưu trữ để tăng giá trị cho ID được chỉ định, hãy truy xuất giá trị mới và trả về.

Tôi vừa thử nghiệm điều này trong MySQL 5.1.59:

CREATE PROCEDURE increment (IN uniqid VARCHAR(255))
BEGIN
   UPDATE `table` SET number = number + 1 WHERE id = uniqid;
   SELECT number FROM `table` WHERE id = uniqid;
END

Cách sử dụng:

CALL increment(uniqid)

Nếu có thể có nhiều truy cập đồng thời, bạn có thể muốn LOCK bảng trước để đảm bảo tính nguyên tử của hoạt động - MySQL rõ ràng không cho phép các thủ tục được lưu trữ tự khóa bả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. Thay đổi tên của create_at và updated_at của Laravel

  2. Dữ liệu nối SQL từ nhiều bảng với MYSQL

  3. Cách kiểm tra lựa chọn để cập nhật trong MySQL

  4. PL / MySQL có tồn tại không?

  5. Doctrine 2 thêm trường mới tự động tạo các giá trị trình tự