更新记录,如果存在,否则插入在MySQL(Update record if exist, else

2019-10-16 23:38发布

我知道,这个问题被问了很多次,并回答以及..
不过,我的问题是更具体的,我无法找到一个妥善的解决办法。

我的表(称为页)就是这样;

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

我需要更新我的记录,如果蛞蝓( 我已经转换它唯一的 )张贴相同。

我的意思是,我需要根据 记录更新/插入我的记录。

例如。 当前数据:

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

如果发布的数据有title=ChildPage, content=html.., slug=mainpage然后我需要更新此前的纪录(标题和内容记录),但是如果数据具有title=MainPage, content=html.., slug=other_slug然后我需要插入这个数据作为新的一个新的ID。

UPDATE

弹头记录转化为唯一键。

Answer 1:

最合适的事情,我能想象是创造slug列的唯一索引

ALTER TABLE pages ADD UNIQUE KEY slug;

原因很简单:这是不是唯一的约束,可能有不止一个塞与“炫魅” ......哪一个应该更新?

然后使用对重复密钥更新条款:

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


文章来源: Update record if exist, else insert in MySQL