MYSQL INSERT,UPDATE DELETE

时间:2014-07-07 13:11:37

标签: mysql replace insert

我有两个MYSQL表casespivot

cases看起来像这样:

Idgame  Id
   1     2
   1     1
   1     5
   1     3
   1     1
   1     6
  ...   ...
   1     2

pivot看起来像这样:

Idgame   Id   Icone
   1      1      7
   1      2     14
   1      3     15
   1      5      6
   1      6      1

pivot中的所有ID都必须是cases

的不同ID

用户可以修改cases中的ID,因此当有更改时我想更新pivot

1)如果还有一个新ID我还没有pivot我想在pivot中添加一个新行,其中Icone = 1(我将1设为默认值)

2)如果某些ID已不在cases我想在pivot中删除

3)如果身份证仍在pivot

,我无法更改cases中的任何内容

我试图用REPLACE INTO或INSERT ON DUPLICATE KEY来做到这一点,但我无法做到这一点......

我尝试过类似下面的内容。它几乎可以工作,但它没有执行删除(第2点): 我在pivot中的3列(id,idgame和icone)上添加了PRIMARY KEY。

REPLACE INTO `pivot` (id,idgame,icone)
SELECT DISTINCT cases.id, cases.idgame, pivot.icone
FROM `cases`
LEFT JOIN pivot ON (pivot.Idgame = cases.Idgame AND pivot.id = cases.id)
WHERE cases.Idgame = 1 

是否可以只使用一个请求执行此操作?

1 个答案:

答案 0 :(得分:0)

是的,您可以在一个请求中执行所有这些操作。您必须使用MySQL TriggersStored Procedure

您可以为cases以及after deleteafter insert事件的after update表编写触发器。

有关详细信息,请参阅:
http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
http://www.mysqltutorial.org/sql-triggers.aspx