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

Bạn có thể truy cập giá trị tăng tự động trong MySQL trong một câu lệnh không?

không cần tạo một bảng khác và max () sẽ gặp sự cố theo giá trị auto_increment của bảng, hãy làm như sau:

CREATE TRIGGER trigger_name BEFORE INSERT ON tbl FOR EACH ROW
BEGIN
   DECLARE next_id;
   SET next_id = (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='tbl');
   SET NEW.field = next_id;
END

Tôi khai báo biến next_id vì thường nó sẽ được sử dụng theo một số cách khác (*), nhưng bạn có thể thực hiện ngay new.field =(select ...)

CREATE TRIGGER trigger_name BEFORE INSERT ON tbl FOR EACH ROW
BEGIN
   SET NEW.field=(SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='tbl');
END

Ngoài ra trong trường hợp của (trường chuỗi SELECT), bạn có thể sử dụng giá trị CAST;

CREATE TRIGGER trigger_name BEFORE INSERT ON tbl FOR EACH ROW
BEGIN
   SET NEW.field=CAST((SELECT aStringField FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='tbl') AS UNSIGNED);
END

(*) Để tự động đặt tên cho hình ảnh:

SET NEW.field = CONCAT('image_', next_id, '.gif');

(*) Để tạo hàm băm:

SET NEW.field = CONCAT( MD5( next_id ) , MD5( FLOOR( RAND( ) *10000000 ) ) );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mẹo nhanh về MySQL:Sử dụng lệnh DROP USER

  2. Sử dụng Jquery Ajax để lấy dữ liệu từ Mysql

  3. Khắc phục sự cố sao chép MySQL:Phần thứ hai

  4. Truy xuất id được chèn lần cuối bằng Mysql

  5. Giám sát cơ sở dữ liệu - Khắc phục sự cố Prometheus với SCUMM Dashboards