ODBC更新重复行的单个实例

时间:2014-01-07 22:38:18

标签: sql database sql-update odbc duplicates

我正在开发一个使用ODBC从所有类型的数据库读取/写入的程序,而我在解决问题的解决方案时遇到问题,因为该问题可能会在数据库,但我们只想更新一个实例。

例如,假设用户连接到具有下表的某个ODBC数据库:

first_name|last_name
--------------------
person    |man
person    |man
triangle  |man

在我们的应用程序中,所有这三行都会显示在UI中,您可以单独编辑每一行。问题是数据库没有我们的应用知道的主键列,并且我们不允许向用户添加自己的数据库添加任何内容,因此我们无法做到添加主键列,因为它可能会破坏其数据库。由于没有主键列,因此在执行UPDATE时,知道要更新哪一行的唯一方法是执行WHERE子句来比较行中每列的值。所以像这样:

UPDATE table SET first_name = something WHERE first_name = person AND last_name = man;

这不会起作用,因为它会更新所有具有匹配名和姓的行,我们希望它只更新其中一行。无论哪个更新都无关紧要,这样可以简化事情,希望如此。

我确实发现this solution似乎很有希望,但我不确定如何修改它以使用没有主键列的数据库。

我目前正在使用SQLite来测试查询,因此如果可能的话,所发布的任何解决方案都应使用该语言。一旦我确认它有效,我将把它转换为使用ODBC。

1 个答案:

答案 0 :(得分:0)

对未知数据库引擎使用ODBC,您可能只能使用读/写游标和定位更新来执行此操作。这样,即使存在其他相同的行,也可以更新单行。请注意,不确定每个数据库引擎的ODBC驱动程序是否支持此类更新,甚至根本没有唯一索引的表更新。