Tài liệu nói rằnglỗi không mong muốn trong kích hoạt khi xuất khẩu
Không thể có hai trigger cho một bảng cho rằng có thời gian hành động kích hoạt cùng và sự kiện.
Tôi sử dụng mysql 5.5.16. Tôi đã tạo hai trình kích hoạt. upd_check1
và sale_tri
. Tôi chắc chắn rằng hai kích hoạt của tôi thực hiện hai bảng khác nhau trên sự kiện INSERT
. Nhưng tại sao tôi nhận được lỗi này trong cả hai kích hoạt. khi tôi thử xuất cơ sở dữ liệu (phpmyadmin không hiển thị lỗi nhưng mysql workbench, heidisql, trình duyệt truy vấn hiển thị lỗi).
SQL Lỗi (1235): Phiên bản này của MySQL chưa hỗ trợ 'nhiều gây nên với thời gian hành động tương tự và sự kiện cho một bảng'
Ở đây tôi upd_check1
kích hoạt
--
-- Triggers `product_purchases`
--
DROP TRIGGER IF EXISTS `upd_check1`;
DELIMITER //
CREATE TRIGGER `upd_check1` AFTER INSERT ON `product_purchases`
FOR EACH ROW BEGIN
DECLARE X INTEGER;
SET X = (SELECT product_id FROM product_stock where product_id = NEW.product_id);
IF NEW.product_id =X THEN
UPDATE
product_stock AS S,
product_purchase_item AS I,
product_purchases AS P
SET
S.product_total_quantity=S.product_total_quantity+I.quantity
WHERE
S.product_id=I.product_id
AND
I.product_purchase_item_id=P.product_purchase_item_id
AND
P.product_purchase_id=NEW.product_purchase_id;
ELSE
INSERT INTO
product_stock (product_id,product_total_quantity)
SELECT
product_id, quantity
FROM
product_purchase_item
WHERE
product_purchase_item_id=NEW.product_purchase_item_id;
END IF;
END
//
DELIMITER ;
Và tại đây, tôi kích hoạt kích hoạt
--
-- Triggers `product_sales`
--
DROP TRIGGER IF EXISTS `sale_tri`;
DELIMITER //
CREATE TRIGGER `sale_tri` AFTER INSERT ON `product_sales`
FOR EACH ROW BEGIN
DECLARE X INTEGER;
SET X = (SELECT product_id FROM product_stock where product_id = NEW.product_id);
IF NEW.product_id =X THEN
update product_stock as s,
product_sale_item as i,
product_sales as p
SET s.product_total_quantity=s.product_total_quantity-i.quantity
WHERE s.product_id=i.product_id AND
i.product_sale_item_id=p.product_sales_item_id AND
p.product_sales_id=NEW.product_sales_id;
END IF;
END
//
DELIMITER ;
Bạn chắc chắn các bảng đó chưa có trình kích hoạt trên chúng? –
yea. chỉ ở trên hai trình kích hoạt tôi sử dụng. – Imran
Bạn gặp lỗi trong khi * xuất * DB hoặc trong khi * đang nhập *? –