MySQL - 如果某个列值等于其他插入行(NO DUPLICATE KEY),则更新行

时间:2017-03-17 02:02:31

标签: mysql sql-update sql-insert insert-update

我有一个存储元值的表,但是,我想要执行的插入/更新 - 没有唯一键(甚至不是列的组合)

1列存储帖子的ID,1表示元值的varchar键,1表示元值...

现在问题是,表 CAN 包含重复的行,很容易发生这种情况:

id_post   |   key   |   value
   5        'bobber'     4
   3        'locer'      2
   5        'bobber'     4

现在我要做的是执行插入或重复密钥更新的变体,问题是,我没有触发更新的密钥。

如果表中已存在key值,我想更新相应的value列。如果不是,我想插入一个全新的行。

所有我发现最终都会添加一个关键约束,这是我无法做到的事情。
另外,我想要创建存储过程/函数。

请帮忙吗?谢谢: - )

1 个答案:

答案 0 :(得分:-1)

您可以将行id_post更新为主键或唯一键

ALTER TABLE 您的表名 ADD PRIMARY KEY(id_post);