SQLite如何更新属于多列索引的列

时间:2011-10-13 15:43:03

标签: sqlite indexing

假设我有一个索引(id,name),并希望执行如下查询:

update <table> set name='new name' where name='old name'

然后我得到了错误:

Query Error: columns id, name are not unique Unable to fetch row.

那是什么错误?如何在不出错的情况下更新该列?

3 个答案:

答案 0 :(得分:1)

似乎在sqlite中,WHERE子句必须返回一个唯一的行。

将您的SQL更改为:

update <table> set name='new name' where id='id' and name='old name'

答案 1 :(得分:1)

如果您可以显示<table>的内容,至少包含name = 'new name'name = 'old name'的所有行,将会有所帮助。

但是,最合乎逻辑的假设是,您的表中已存在两行具有相同id的行,其中一行的值为'new name',另一行的值为'old name'name字段中。如果这是真的,并且您运行此UPDATE,则结果将违反该字段组合上的任何PRIMARY KEYUNIQUE索引。

答案 2 :(得分:1)

错误信息很难理解。

更详细地说,它可以说:

Query Error: columns id, name would be not unique after the update operation