插入或更新(没有键)

时间:2011-03-03 03:29:50

标签: mysql sql odbc

我有一个有两个字段的表。可以有多个行,每个字段的值相同,但只有一行,两个值都相同。

嗯,这听起来不是很好,所以这里有一些例子:

good stuff
a, 1
a, 2
b, 1
b, 2  < ==== all are unique combinations

bad stuff
a, 1
a, 1 <=== this permutation should only occur once

所以,作为伪代码:if no row exists with both columns of the give values, then UPDATE INSERT a new row (else, do nothing).

表没有键(是错的吗?)。有没有一个命令可以执行此操作,有点INSERT IF NOT EXISTS?或者我首先要搜索,然后决定是否要插入?

首选ODBC解决方案,尽管它目前只有MySql

2 个答案:

答案 0 :(得分:2)

您可能正在寻找INSERT ... ON DUPLICATE KEY UPDATE。 (请注意,您必须在表格中有一个唯一键才能使其生效)

答案 1 :(得分:1)

  1. 我不认为您正在寻找upsert查询 - 如果找到密钥会更新,否则会插入。
  2. 您可以将多个列设为主键。这样做会在表上设置一个唯一约束,这将不允许重复插入。但是,在大多数数据库中,它会回复错误,因此如果您正在进行批量更新/复制,则不会提交任何更新。
  3. 在数据库术语中,将多个字段作为主键称为复合/复合/连接键。