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

cập nhật cột bảng sau khi chèn bản ghi mới bằng cách sử dụng trình kích hoạt MySQL

Cách bạn đang cố gắng đặt giá trị cho một cột là một bản cập nhật. Bởi vì bạn đang làm điều đó sau khi chèn hoạt động đã hoàn thành.

Bạn thực sự cần một before cò súng.

Và để gán cùng một giá trị tăng tự động mới cho cột khóa chính của cùng một bảng, bạn nên lấy nó từ information_schema.tables .

Ví dụ :

delimiter //
drop trigger if exists bi_table_name //

create trigger bi_table_name before insert on table_name
for each row begin
  set @auto_id := ( SELECT AUTO_INCREMENT 
                    FROM INFORMATION_SCHEMA.TABLES
                    WHERE TABLE_NAME='table_name'
                      AND TABLE_SCHEMA=DATABASE() ); 
  set new.priority= @auto_id;
end;
//

delimiter ;

Lưu ý :Đảm bảo rằng bạn không có bất kỳ trình kích hoạt được xác định trước nào có cùng tên và / hoặc hành động. Nếu có, hãy loại bỏ chúng trước khi tạo mới.

Quan sát :
Theo tài liệu mysql về last_insert_id () ,

do đó, tùy thuộc vào last_insert_id()auto_increment giá trị trường trong chèn hàng loạt có vẻ không đáng tin cậ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. Cập nhật truy vấn để cập nhật hàng trong MySQL

  2. sql cách kết hợp ba truy vấn từ hai bảng thành một truy vấn

  3. Kết nối MySQL VB.NET

  4. Chèn mặc định vào cột không null nếu giá trị là null

  5. Làm thế nào để lưu trữ một mảng vào mysql?