首先我跑了
select beatid, count(*)
from beat
group by beatid
having count(*) > 1
结果没有排。
然后我跑了
CREATE UNIQUE INDEX BEAT_IDX_UNQ ON BEAT (BEATID);
得到了
无效的插入或更新值:对象列受约束 - 否 2个表行可以具有重复的列值。试图存储 唯一索引中的重复值(对活动事务可见) “BEAT_IDX_UNQ”。
这是怎么回事?
答案 0 :(得分:3)
像你这样的情况会有更多原因。首先,您需要重新检查是否有一些影响“节拍”关系的待处理事务,提交它们或回滚可以解决问题。您可以检查系统表rdb$statements
以执行查询。
此外,还有一个问题是如何在唯一值的意义上处理NULL。您可以参考 Firebird NULL Guide ,它可以在Firebird documentation中找到。毕竟,如果你仍然有同样的问题,备份/恢复将解决。