密钥不唯一,更新非密钥属性上的行时?

问题描述:

我有一个很小的数据库很奇怪的问题。 该表有大约400个条目,关键字是包含两个md5散列的两列。 我的表看起来像这样:密钥不唯一,更新非密钥属性上的行时?

create table if not exists documents (id NOT NULL, pid NOT NULL, path NOT NULL, title, version, author, department, retention DEFAULT 3, date,comment TEXT,PRIMARY KEY(id, pid)); 

现在我有例如该行数据的数据库中:

sqlite> select oid,* from documents where oid = 11; 
rowid|id|pid|path|title|version|author|department|retention|date|comment|publisher|record|recordretention|indoklenk 
11|7408cf58dbf8985d8532b719edcd08b8|98b482dc01793d0dafa02a644fc425bd|Path\To\A\File|Checkliste.doc||||3|2012-01-23||Foobar||3|1 

,现在我想改变一些东西,给他的OID为其中:

sqlite> update documents set indoklenk = 0 where oid = 11; 
Error: columns id, pid are not unique 

为什么我得到这个错误?我从来没有改变任何关键?另外我没有任何碰撞...有一些条目具有相同的id,但pid总是不同。

难道这是一个糟糕的主意,改变oid的东西吗?我从来没有heared的一些坏事,它...

编辑:即使我通过

update documents set indoklenk = 0 where id = '7408cf58dbf8985d8532b719edcd08b8' and pid = '98b482dc01793d0dafa02a644fc425bd'; 

它不工作,改变它!我得到同样的错误......那里发生了什么?为什么我不能改变数据?

经过大量的代码研究,我发现错误不是来自我更新的表格,而是从第二个表格中写入日志消息。在这个表中主键没有设置正确,所以如果我在文档表中更新,它可能是一个双重信息发生...

检查您的触发器第一;)