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

Trong trình kích hoạt MySQL, có thể đặt một biến người dùng với NEW.col và sử dụng biến đó trong truy vấn cập nhật không?

Điều này không thể xảy ra như được mô tả với sql động / Câu lệnh chuẩn bị. Nó sẽ tạo ra Error Code: 1336. Dynamic SQL is not allowed in stored function or trigger khi cố gắng thậm chí CREATE TRIGGER .

Về cách gần nhất bạn có thể tiếp cận với tự động hóa là sử dụng CREATE EVENT . Sự kiện là các chương trình được lưu trữ theo lịch trình chạy theo lịch trình / Khoảng thời gian bạn chọn. Khoảng thời gian là:

Bạn có thể đặt một "cờ" để nói về một hàng, chẳng hạn như bảng mà bạn đang mô tả ở trên có trình kích hoạt Sau khi Chèn. Sau đó, sự kiện có thể thực hiện Tuyên bố chuẩn bị động và thực thi nó.

Xem câu trả lời của tôi tại đây trên Quản lý sự kiện .

Tôi phải nói rằng ngay cả khi chạy trong một sự kiện, những gì bạn đang đề xuất gần như là Luôn luôn dấu hiệu của một thiết kế giản đồ kém sẽ không dễ nhận được sự đánh giá của đồng nghiệp.

Một lý do tại sao sql động và Stmt đã chuẩn bị không được phép là vì trình kích hoạt cần phải nhanh và thậm chí DDL có thể được đưa vào chuỗi và được thực thi. Và các câu stm DDL như ALTER TABLE không được phép trong trình kích hoạt (chúng có thể mất hàng giờ để chạy theo nghĩa đen).

Lược đồ của bạn cũng có thể có một bảng được chia sẻ với một cột ven_code là cột phân biệt. Thay vào đó, bạn chọn tạo bảng mới cho mỗi ven_code . Đó thường là lựa chọn thiết kế và hiệu suất kém.

Nếu bạn cần trợ giúp về thiết kế giản đồ, tôi rất vui được trò chuyện về nó với bạn trong phòng trò chuyện.



  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ần lấy dữ liệu sản phẩm ra khỏi cơ sở dữ liệu mysql

  2. Làm cách nào để thêm cột vào bảng làm việc bằng thủ tục mới được lưu trữ

  3. sử dụng CASE trong mệnh đề WHERE

  4. Truy cập Cơ sở dữ liệu MySQL trong Electron

  5. Làm cách nào để chạy tệp .sql như một phần của truy vấn MySQL Workbench 6.2?