2013-06-11 37 views
6

Tôi đã tìm kiếm và đọc, nhiều câu trả lời về vấn đề này, nhưng không thể có câu trả lời rõ ràng về cách thực hiện việc này.Kích hoạt MySql, cập nhật bảng khác trên chèn

truy vấn của tôi là như sau:

DELIMITER // 
CREATE TRIGGER `Stock_Update` AFTER INSERT ON `Store_db`.`Product_Supply` FOR EACH ROW 
BEGIN 
    UPDATE `Store_db`.`Stock` AS `ST` 
    SET `ST`.`Stock_Quantity` = `ST`.`Stock_Quantity` + `Product_Supply`.`Supply_Quantity` 
    WHERE `ST`.`Product_ID` = `Product_Supply`.`Product_ID`; 
END// 
DELIMITER ; 

Thanks Trong Advance.

P.S. Câu trả lời chung chung hơn sẽ tốt hơn và có thể hữu ích cho những người khác cũng như

+0

Mô tả nhanh về lỗi bạn đang nhận được sẽ hữu ích. – RandomSeed

+0

Tôi nhận được rằng nó không thể tìm thấy các cột mà sau này bạn đã nói với tôi để thay thế bằng NEW.ColumnName – Mitsosp

Trả lời

4

Từ bên trong trình kích hoạt trên một bảng nhất định, tất cả các tham chiếu đến các trường của bảng này phải được thêm tiền tố NEW. hoặc OLD.. giá trị của trường này sau hoặc trước khi thay đổi.

Trong trường hợp của bạn, bạn có thể muốn thêm số lượng mới được chèn vào cổ phiếu hiện tại của mình: sử dụng NEW.Supply_Quantity (không đề cập đến Product_Supply, điều này đã được ngụ ý bởi từ khóa NEW).

Tương tự như vậy, bạn chắc chắn muốn sử dụng NEW.Product_ID trong điều kiện của mình.

Lưu ý rằng NEW không có sẵn trong trình kích hoạt khi xóa, như OLD khi kích hoạt khi chèn.

+0

Tốt, đó là những gì tôi cần, cảm ơn rất nhiều. – Mitsosp