无法在没有重复值的列上构建唯一索引

问题描述 投票:0回答:2

首先我跑了

select beatid, count(*)
from beat
group by beatid
having count(*) > 1

结果我没有得到任何行。

然后我就跑了

CREATE UNIQUE INDEX BEAT_IDX_UNQ ON BEAT (BEATID);

并且得到了

无效的插入或更新值:对象列受到约束 - 否 2 个表行可以有重复的列值。尝试存储 唯一索引中的重复值(对活动事务可见) “BEAT_IDX_UNQ”。

这是怎么回事?

firebird
2个回答
3
投票

像您这样的情况可能还有更多原因。首先,您需要重新检查是否有一些未决事务影响“beat”关系,提交它们或回滚可以解决问题。您可以检查系统表

rdb$statements
来执行查询。

此外,还有一个问题是如何在唯一值的意义上处理 NULL。您可以查阅Firebird NULL指南,它可以在Firebird文档中找到。毕竟,如果您仍然遇到同样的问题,备份/恢复就可以解决。


0
投票

重新启动firebird并重试

© www.soinside.com 2019 - 2024. All rights reserved.