簡體   English   中英

插入到同一表中觸發mysql

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM