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

Lỗi MySql:Không thể cập nhật bảng trong hàm / trình kích hoạt được lưu trữ vì nó đã được sử dụng bởi câu lệnh gọi hàm / trình kích hoạt được lưu trữ này

Bạn không thể thay đổi bảng trong khi trình kích hoạt INSERT đang kích hoạt. INSERT có thể thực hiện một số khóa có thể dẫn đến bế tắc. Ngoài ra, cập nhật bảng từ một trình kích hoạt sau đó sẽ khiến chính trình kích hoạt đó kích hoạt lại trong một vòng lặp đệ quy vô hạn. Cả hai lý do này là lý do tại sao MySQL ngăn bạn làm điều này.

Tuy nhiên, tùy thuộc vào những gì bạn đang cố gắng đạt được, bạn có thể truy cập các giá trị mới bằng cách sử dụng NEW.fieldname hoặc thậm chí các giá trị cũ - nếu thực hiện CẬP NHẬT - với OLD.

Nếu bạn có một hàng có tên full_brand_name và bạn muốn sử dụng hai chữ cái đầu tiên làm tên ngắn trong trường small_name bạn có thể sử dụng:

CREATE TRIGGER `capital` BEFORE INSERT ON `brandnames`
FOR EACH ROW BEGIN
  SET NEW.short_name = CONCAT(UCASE(LEFT(NEW.full_name,1)) , LCASE(SUBSTRING(NEW.full_name,2)))
END


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đặt lại mật khẩu ROOT trong MySQL 5.6

  2. Cách cài đặt MySQL 8.0 trên RHEL / CentOS 8/7 và Fedora 35

  3. Sắp xếp một bảng MySQL theo hai cột

  4. Đặt lại mật khẩu gốc của MySQL

  5. JSON_ARRAYAGG () - Tạo một Mảng JSON từ các Hàng Truy vấn trong MySQL