我有一个库存数据库来跟踪某些我有时借出的设备。我有一个设备表,还有一个设备历史表。我使用两种形式来更新设备记录,并且更新也记录在DeviceHistory表中。两种形式都调用相同的更新函数。我暂时写出sql尝试查找差异。当我使用formA时会导致:
insert into QADeviceHistory (DeviceID, Timestamp, StatusID, AuthorID, AssignedToID, History)
values ( 264, '11/15/2018 9:31:10 AM', 'AVAIL', 'rongray', '', '');
,一切正常。但是,当我使用formB时会导致:
insert into QADeviceHistory (DeviceID, Timestamp, StatusID, AuthorID, AssignedToID, History)
values ( 264, '11/15/2018 9:31:45 AM', 'AVAIL', 'rongray', '', '');
Microsoft OLE DB Provider for ODBC Drivers错误'80040e14' [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]违反PRIMARY 密钥约束“ QADeviceHistory_pk”。无法在其中插入重复的密钥 对象“ dbo.QADeviceHistory”。 /py2/DeviceRecord.asp,第1393行
DeviceHistory的主键是DeviceID和Timestamp,而我尝试输入的值实际上是唯一的。奇怪的是,DeviceHistory记录确实写入了表,所以我真的不明白为什么我在使用formB时收到错误,但在使用formA时却收到错误。我很想在接下来添加一个简历,然后忽略它,但至少想了解正在发生的事情。
(而且,这不是新代码...已经存在了几年。最近的变化是我不得不将数据库从Win 2008服务器迁移到Win 2016服务器,并且两个服务器都在使用MS SQL Server 2008。)