2014-01-29 102 views
0

我想根据两列更新或插入数据。基于两列的MySQL插入/更新

每个用户都可以有条目。每个用户的输入必须是用户唯一的。不同的用户可以共享条目ID。

每个条目都会包含一段文字。

id, user_id, entry_number, data 
1, 1, 1, "hello" 
2, 1, 2, "world" 
3, 1, 3, "fizz" 
4, 2, 1, "buzz" 
5, 2, 3, "fizzbuzz" 

我希望能够插入/更新(取决于如果存在的话),这个数据。我该怎么做?提前

+0

你可以检查条目以要插入的数据存在,如果存在的话,你还有更新插入。一些代码将是很好过。 。 – Naruto

回答

1

由于可以创建在对一个唯一索引(USER_ID,入口号),然后使用

INSERT ... ON DUPLICATE KEY UPDATE

然而,这对重复密钥可能会成为MySQL的非标准扩展(请检查?)。如果您打算在不同的数据库引擎上使用它,您可能需要手动进行检查。

1

使用REPLACE:“REPLACE的工作方式与INSERT完全相同,只是如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在新行被删除之前删除旧行插入“。在http://dev.mysql.com/doc/refman/5.0/en/replace.html

REPLACE tbl_name (id, user_id, entry_number, data) VALUES (1, 1, 1, "something") 
+0

有没有办法做到这一点,而不指定ID? –

+1

如果您未指定id,则它与现有值不匹配,因此它将具有正常行为,并且只是作为INSERT而不作为UPDATE使用。如果你真的不想使用这个id,你必须在这之前检查一下匹配的存在性,以便确定它是否是你需要的INSERT或UPDATE。 – FabioG