2012-02-07 8 views
0

私は小さなデータベースで本当に奇妙な問題があります。 テーブルには約400のエントリがあり、キーは2つのmd5ハッシュを含む2つのカラムです。 私のテーブルには、次のようになります。キーは非キー属性の行を更新するときに一意ではありませんか?

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を与えることによって、何かを変更したい:今私は、例えば、データベース内のデータの行を持って

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)); 

なぜこのエラーが発生しますか?私は決して鍵を変更しない?また、私はどんな衝突もありません...同じidを持っているが、pidが常に異なるいくつかのエントリがあります。

oidで何かを変更するのは悪い考えですか?私は

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

ことによってそれを変更しても、それは仕事をdoesnt:私は

編集それについて悪い何かを...聞いたことはありません!私は同じエラーを得る...何がそこに起こっている?なぜ私はデータを変更できないのですか?

答えて

0

コードの多くの調査の後、エラーはテーブルの更新ではなく、2番目のテーブルからはログメッセージが書き込まれることがわかりました。このテーブルでは、プライマリキーが正しく設定されていないので、ドキュメントテーブルを更新すると、ダブルメッセージが発生する可能性があります...

最初にトリガーを確認してください;)

関連する問題