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

kích hoạt bảng không xác định mysql

Tôi đã hiển thị bên dưới những gì đã được nói trong các nhận xét cho câu hỏi:

CREATE TRIGGER some_trigger AFTER UPDATE ON table_a
    FOR EACH ROW BEGIN
    DECLARE tname VARCHAR(20);
    IF (NEW.field_offer=1) THEN
       UPDATE `table_b` 
       SET STOCK = CASE NEW.field_state 
                   WHEN 0 THEN STOCK - 1 
                   WHEN 1 THEN STOCK + 1 
                   ELSE STOCK 
                   END
       WHERE ID=NEW.ref_field
       ;
    ELSEIF (NEW.field_offer=0) THEN
       UPDATE `table_c` 
       SET STOCK = CASE NEW.field_state 
                   WHEN 0 THEN STOCK - 1 
                   WHEN 1 THEN STOCK + 1 
                   ELSE STOCK 
                   END
       WHERE ID=NEW.ref_field
       ;
    END IF;
    ...

Lưu ý rằng tôi đã thay đổi các bản cập nhật từ UPDATE ... JOIN vì MySQL không cho phép bạn thay đổi dữ liệu của bảng được kích hoạt; trong khi bạn không thực sự cập nhật table_a, thì JOIN có thể đã đủ để MySQL phản đối ... điều đó và các liên kết sẽ cập nhật mọi hàng trong table_b/c đã khớp trong table_a , không chỉ table_a các hàng liên quan đến các giá trị trong hoặc hàng của trình kích hoạt.




  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ệnh đề MySQL IN có thực thi truy vấn con nhiều lần không?

  2. Các chiến lược để đối phó với các yêu cầu thay đổi liên tục đối với các lược đồ MySQL?

  3. Nhiều id hàng được chèn

  4. MYSQL:Bảng số tuần tự

  5. Hàm EXP () MySQL - Trả lại e Đã tăng lên sức mạnh của x