我已被分配到具有两个表的应用程序,我们称它们为MY_TABLE_ONE
和MY_TABLE_TWO
。当用户在表格中输入数据时,数据输入MY_TABLE_ONE
。这项工作完成后,一个数据库包被触发,这实质上执行以下操作:违规的非现有Oracle数据库约束
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
来自约束名称。而且我无法找到违反约束的地方。
您 检查不会告诉你什么是明显的计数1的重复数据不被插入,由于约束 – 2012-03-06 20:55:21
@SamHolder但我从拉' MY_TABLE_ONE'。我正在寻找那些在尝试将它们插入到'MY_TABLE_TWO'时抛出错误的重复项。 2或更多的计数将显示违反行的限制条件。 – 2012-03-06 20:57:24
如果只有Oracle在错误信息中说“像违反唯一索引约束”这样的话。 – 2016-07-27 22:04:00