我正在处理一些Java代码,并且遇到了一个奇怪的问题。
我有一个主表,该表使用rowid作为主键,并包含一条记录。插入此记录,然后根据需要进行更新。一切正常。
我还有另外三个表,用于存储与第一个表相关的数据,并由第一个表中的rowid引用。
我的问题是,何时该更新其他表中的数据,我通常会删除所有链接到主ID的记录,然后重新插入。
但是这样做似乎并不总是插入记录吗?即使数据肯定被发送到sqlite驱动程序。问题也不是一致的,有时它在循环中添加所有记录,有时它添加两个,最后一次不添加。.这与我删除记录然后重新插入记录有关吗? (真的没有道理)...还是完全其他的东西?
给出以下查询:
16.03 21:32:43 [Server] INFO [Database] Query Was: DELETE FROM faction_members WHERE faction_id='1';
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_members VALUES('1','0f448831-477e-3e62-87aa-bbbdbb2d28ed','0');
然后是第二个数据表:
16.03 21:32:43 [Server] INFO [Database] Query Was: DELETE FROM faction_ranks WHERE faction_id='1';
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','0','Leader');
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','1','General');
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','2','Officer');
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','3','Member');
16.03 21:32:43 [Server] INFO [Database] Query Was: INSERT INTO faction_ranks VALUES('1','4','Recruit');
写入数据库的结果是:
sqlite> select * from faction_members; <-no results
sqlite> select * from faction_ranks;
1|0|Leader
1|1|General
1|2|Officer
sqlite>
有没有猜到?我似乎没有使用插入/更新方法遇到此问题,但是当我删除记录,然后插入新行时,它们并不能可靠地将其插入表中。
没有错误报告
答案 0 :(得分:0)
嗯...我可能刚刚想通了。
删除/插入是在不同的线程中完成的,所以我想这完全有可能,即使我以前曾调用过delete,它实际上并没有首先触发,也可能不在插入循环的中间触发了?
在我的代码中禁止在单独的线程上写,并且所有数据现在似乎都在数据库中。