更新记录(如果存在),否则插入MySQL

时间:2012-07-09 22:39:40

标签: mysql insert record

我知道,这个问题被多次询问并回答了。
但是,我的问题更具体,我找不到合适的解决方案。

我的表(命名为页面)就是这样;

id (int)
title (text)
content (text)
slug (text)

如果slug(我已将其转换为唯一)与发布时相同,我需要更新我的记录。

我的意思是我需要在 slug 记录上更新/插入基于的记录。

EG。当前数据:

  id  |  title  |  content  |  slug  |
--------------------------------------
  1  |  MainPage| some html | mainpage

如果发布的数据有title=ChildPage, content=html.., slug=mainpage,那么我需要更新以前的记录(标题和内容记录),但如果数据有title=MainPage, content=html.., slug=other_slug,那么我需要将此数据作为新数据插入新ID。< / p>

更新

Slug记录被转换为UNIQUE键。

1 个答案:

答案 0 :(得分:3)

我能想象的最合适的事情是在slug列上创建一个唯一的索引

ALTER TABLE pages ADD UNIQUE KEY slug;

原因很简单:如果这不是唯一约束的,那么可能会有多个带有“主页”的子弹......哪一个应该更新?

然后使用ON DUPLICATE KEY UPDATE子句:

INSERT INTO pages 
VALUES (NULL, $title, $content, $slug) ON DUPLICATE KEY UPDATE content=$content