2012-02-07 170 views
0

我有一個很小的數據庫很奇怪的問題。 該表有大約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'; 

它不工作,改變它!我得到同樣的錯誤......那裏發生了什麼?爲什麼我不能改變數據?

回答

0

經過大量的代碼研究,我發現錯誤不是來自我更新的表格,而是從第二個表格中寫入日誌消息。在這個表中主鍵沒有設置正確,所以如果我在文檔表中更新,它可能是一個雙重信息發生...

檢查您的觸發器第一;)