【问题标题】:MYSQL INSERT, UPDATE DELETEMYSQL 插入,更新删除
【发布时间】:2014-08-27 23:37:25
【问题描述】:

我有两个 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 的唯一 Id

用户可以修改cases中的Id,所以当有变化我想更新pivot。

1) 如果有一个新的 Id 尚未 IN pivot 我想在 pivot 中添加一个新行,Icone = 1(我将 1 设置为默认值)

2) 如果 cases 中不再有某些 Id,我想在 pivot 中删除它们

3) 如果 ID 仍在 cases 中,我不会更改 pivot 中的任何内容

我正在尝试使用 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 

是否可以只用一个请求来做到这一点?

【问题讨论】:

    标签: mysql replace insert


    【解决方案1】:

    是的,您可以在一个请求中完成所有这些操作。您必须使用MySQL Triggers 和Stored Procedure。

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

    更多详情请参考:
    http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
    http://www.mysqltutorial.org/sql-triggers.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      相关资源
      最近更新 更多