[英]Insert into same table trigger mysql
每當我在同一張表中插入一行時,我都需要在表中插入折扣行。 現在我知道這可能會以無休止的循環結束,但是我已經進行了檢查,因此在插入折扣行時不會插入任何內容。
Mysql似乎不允許這樣做,它甚至沒有插入表中,更不用說觸發觸發器了
有關如何執行此操作的任何建議?
您不能在附加到該表的觸發器中更改表(當前行除外)。
一種解決方案是將表插入到另一個表中,並使該觸發器將2行插入到您感興趣的表中。
如果您將另一個表blackhole
一個blackhole
,則不必擔心存儲空間。
DELIMITER $$
CREATE TRIGGER ai_bh_test_each AFTER INSERT ON bh_test FOR EACH ROW
BEGIN
INSERT INTO table1 (field1, field2, ...) VALUES (new.field1, new.field2, ....);
INSERT INTO table1 ... values for the second row
END $$
DELIMITER ;
在MySQL中是不允許的。
一種解決方案是讓觸發器兩次插入另一個表。 然后,您將對寫入表進行寫入和更新,並從觸發器管理的讀取表中進行讀取。
您為什么不只將INSERT
代碼更改為這樣的內容? :
INSERT INTO table1 (field1, field2, ...)
VALUES ( @item, @price, ....)
, ( @item, @discount, ...) ;
另一件事是重新評估您的數據結構。 從您提供的有限信息來看,現在的狀態似乎沒有被標准化。 您將在表中存儲兩種類型的信息。
也許您可以通過在表中添加幾列,將兩行(每次都要插入)合並為一個。
或通過將表格分為兩張表格,一張用於“正常”項目行,另一張用於折扣項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.