gpt4 book ai didi

sql - 违反了不存在的 Oracle 数据库约束

转载 作者:行者123 更新时间:2023-12-04 05:02:55 25 4
gpt4 key购买 nike

我被指派处理一个有两个表的应用程序,我们称它们为 MY_TABLE_ONEMY_TABLE_TWO。当用户在表单中输入数据时,数据将输入到 MY_TABLE_ONE 中。完成后,将触发一个数据库包,它主要执行以下操作:

DELETE FROM MY_TABLE_TWO;

INSERT INTO MY_TABLE_TWO
mto.COLUMN_ONE,
moto.COLUMN_TWO,
mott.COLUMN_THREE
FROM MY_TABLE_ONE mto, MY_OTHER_TABLE_ONE moto, MY_OTHER_TABLE_TWO mott
WHERE mto.OTHER_TABLE_ONE_UUID = moto.UUID
AND mto.OTHER_TABLE_TWO_UUID = mott.UUID;

由于某种原因,这个包在插入时开始失败,并显示一条消息:

ORA-00001: unique constraint
(MY_SCHEMA.MY_TABLE_TWO_UK01) violated
ORA-06512: at "MY_SCHEMA.MY_PACKAGE", line 2
ORA-06512: at line 1

查找MY_TABLE_TWO 上的约束,没有MY_TABLE_TWO_UK01 约束。但是,有一个 MY_TABLE_TWO_UK 约束要求插入的 3 个列是唯一的。但是,如果我运行以下查询:

SELECT mto.COLUMN_ONE, moto.COLUMN_TWO, mott.COLUMN_THREE, COUNT(*) AS COUNTER
FROM MY_TABLE_ONE mto, MY_OTHER_TABLE_ONE moto, MY_OTHER_TABLE_TWO mott
WHERE mto.OTHER_TABLE_ONE_UUID = moto.UUID
AND mto.OTHER_TABLE_TWO_UUID = mott.UUID
GROUP BY mto.COLUMN_ONE, moto.COLUMN_TWO, mott.COLUMN_THREE
ORDER BY COUNTER DESC;

那么所有的计数都是 1。所以看起来没有违反约束条件。

有人知道发生了什么事吗?我不确定约束名称的 01 来自哪里。而且我找不到违反约束的地方。

最佳答案

这是一个索引

select * from all_ind_columns where index_name = 'MY_TABLE_TWO_UK01';

关于sql - 违反了不存在的 Oracle 数据库约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9591677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com