【发布时间】:2011-10-09 00:01:28
【问题描述】:
我已经创建了选择性唯一索引
CREATE UNIQUE INDEX fn_unique_idx
ON table1 (CASE WHEN is_deleted='N' THEN id ELSE null END,
CASE WHEN is_deleted='N' THEN name ELSE null END,
CASE WHEN is_deleted='N' THEN type ELSE null END);
因此,在任何时候,我都只想要一个带有 is_deleted 'N' for (id, name, type) 的条目。
插入工作正常,即当我尝试使用预期的 is_deleted = 'N' 插入时,它允许输入多个 is_deleted 'Y' 并抛出独特的约束异常。
但是当我尝试更新它时 预言机错误:
ORA-00600: internal error code, arguments: [qctVCO : bfc], [1], [0], [1], [871], [1], [2], [875], [], [], [], []
SQL : UPDATE table1 set is_deleted = 'Y' where id = 1, name = 'foo' and type =bar';
我想将此当前条目设置为已删除,并插入一个包含更新数据的新条目,并且 is_deleted = 'N'。这基本上是为了维护历史。
谁能帮我解决这个问题。
谢谢。
【问题讨论】:
标签: sql oracle indexing constants