我有两个MYSQL表cases
和pivot
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
用户可以修改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
是否可以只使用一个请求执行此操作?
答案 0 :(得分:0)
是的,您可以在一个请求中执行所有这些操作。您必须使用MySQL Triggers
和Stored Procedure
。
您可以为cases
以及after delete
和after insert
事件的after update
表编写触发器。
有关详细信息,请参阅:
http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
http://www.mysqltutorial.org/sql-triggers.aspx