关于key violention!(100分)

  • 主题发起人 主题发起人 liuyj
  • 开始时间 开始时间
L

liuyj

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,哪几种情况下会出现key violention错误,怎么避免该错误?希望能详细一点.频繁打开和关闭数据库会不会产生这个错误?
 
关键字重复
 
关键字并没有重复,我的程序中,有三种数据库,分别为每分钟,每刻钟,每小时写一次.
还有没有其它原因?
 
应该是关键字重复
 
应该是你的表的主键重复了,
用try...except可以接管出错消息。
try
// ......
except
on E: Exception do showmessage(E.Message);
end;

你可以单步跟踪一下,看是否写入表时有重复数据。
 
呵呵, 你写的时候可能有其它进程同时写这个库(如整15分钟, 整小时), 然后同时
对库添加同样的数据, 就会关键字重复了.
 
不信你可以去年key键,如果再出的话......
 
对,先去掉关键字试试看,看看还有没有这个问题
 
是关键字重复。在DATABASE DESKTOP里去掉代表关键字的*就没有这个问题了。
 
去了还要加一个的,你可以使用一个String保存:
formatdatetime('yyyymmdd',now) + inttostr(random(99999));
 
应该是关键字重复。
我觉得你应该仔细检查一下你的程序,肯定是程序的问题,
比如,循环插入过程中关键字没有变化,或插入之前不能保证没有重复等。
 
不知道能否sql monitor监视一下
 
我遇到一种Paradox表的情况是,把主索引与副索引定义反了,而程序中用的是主索引
 
无论是为了解决问题还是为了发现问题
我相信你只要加入一个自动增量字段就可以解决。
至少你可用此方法发现问题。
 
是否设置错了参照完整性
 
接受答案了.
 
后退
顶部