违反主键约束--firebird SQL

违反主键约束--firebird SQL,sql,database,firebird,firebird2.5,Sql,Database,Firebird,Firebird2.5,我犯了个错误 违反主键或唯一键约束 当我尝试运行此insert语句时(从C#接口): 具体错误是: 违反表“DESCRIPT”*上的主键或唯一键约束“DESCRIPTOR$OBJID” OBJID是该表的主键 但是如果我跑 select * from descript where objid = 2109900055 没有返回任何行,因此我知道实际上没有重复的行 我见过、、和,但它们似乎都没有一个适用的解决方案,或者至少没有一个有效的解决方案。我也在使用Firebird SQL,如果这有什

我犯了个错误

违反主键或唯一键约束

当我尝试运行此
insert
语句时(从C#接口):

具体错误是:

违反表“DESCRIPT”*上的主键或唯一键约束“DESCRIPTOR$OBJID”

OBJID
是该表的主键

但是如果我跑

select * 
from descript 
where objid = 2109900055
没有返回任何行,因此我知道实际上没有重复的行

我见过、、和,但它们似乎都没有一个适用的解决方案,或者至少没有一个有效的解决方案。我也在使用Firebird SQL,如果这有什么不同的话


有人有什么想法吗?

检查OBJID的数据类型及其限制。我怀疑您使用了这么大的数字,超出了数据类型的最大大小

为什么还要插入主键?@Mihai我必须这样做。这是一个非常大和复杂的项目/数据库的一部分,我们的主键都不能自动递增。因此必须在插入中设置它们。是否有可能发生多个插入?另外,数据类型是整数?@I_am_Batman No。只有一个插入。如果使用
其中objid+0=2109900055
会发生什么。有些情况下,条目在表中,但不在索引中;使用
+0
将忽略查找的索引。另一种可能性是,您有一个limbo事务,它也插入了这个值。Limbo事务已准备好,但尚未提交。如果它是整数,则不是。它是整数,所以我还不是太大。
select * 
from descript 
where objid = 2109900055