【问题标题】:ORA-02291: integrity constraintORA-02291: 完整性约束
【发布时间】:2015-04-11 18:09:44
【问题描述】:

ORA-02291: 完整性约束 我遇到了困难,我有一个表 (TF_MODE) 链接到另一个表 (PRODUCT) 这样您就可以在 TF_MODE 中为各种产品设置一行。问题是我可以在 TF_MODE 表中完美地插入 10 行,但是当我尝试插入第 11 行时(即当 ID = 11 时)我得到 "ORA-02291: 完整性约束" 甚至虽然 PRODUCT 表中的第 11 个条目确实存在外键,但奇怪的是,如果我将 ID 更改为 12/14,则查询成功,但对于某些 ID,它不起作用,例如 999,1000 ;没有固定的模式不起作用,所以基本上问题出在少数 ID 值,而不是因为该外键的值不存在于父级中表(实际上值确实存在)。

我正在使用 Oracle 11g。

知道这种奇怪行为背后的原因是什么吗?

谢谢!

更新:

没有触发器,唯一的检查约束是“IS NOT NULL”。

TFMODE:

CREATE TABLE "DESIGN"."TFMODE"
(
"ID"                NUMBER(38,0) NOT NULL ENABLE,
"F_PRODUCT"         NUMBER(38,0) NOT NULL ENABLE,
"SYS.CURRENT_I[MA]" NUMBER(10,3) NOT NULL ENABLE,
"LAST_MODIFIED_DATE" DATE NOT NULL ENABLE,
"VOLTAGE" NUMBER(10,3) NOT NULL ENABLE,
CONSTRAINT "TFMODE_PK" PRIMARY KEY ("ID") USING 
INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(
INITIAL 81920 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 
0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT 
CELL_FLASH_CACHE DEFAULT) TABLESPACE "DESIGN" ENABLE,
CONSTRAINT "TFMODE_PRODUCT_FK1" FOREIGN KEY ("ID") REFERENCES 
 "DESIGN"."PRODUCT" ("ID") ENABLE
) 

 SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
NOCOMPRESS LOGGING STORAGE
(
INITIAL 81920 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0
FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT 
CELL_FLASH_CACHE DEFAULT
)
TABLESPACE "DESIGN" ;

产品:

CREATE TABLE "DESIGN"."PRODUCT"
(
"ID"           NUMBER(*,0) NOT NULL ENABLE,
"MANUFACTURER" VARCHAR2(100 BYTE),
...
)
TABLESPACE "DESIGN" ;

PRODUCT 表有很多列,为简洁起见已省略。

插入语句(来自 java 应用程序):

INSERT INTO TFMODE VALUES  ( 11, 953, 2.27, to_date('2014-11-18','YYYY-MM-DD'), 3.8) 

我尝试从 sql developer 编辑东西,但结果相同,这是屏幕截图:

ID=11 不起作用

ID=12 作品

【问题讨论】:

  • 你能把这些表的定义贴出来吗?
  • 验证检查约束也或可能是触发器。
  • 请发布表的创建语句(包括约束),以及用于在表中设置示例数据的插入语句,然后是演示您遇到的问题的插入语句。
  • 正如 Nick.McDermaid 所说,错误是因为您没有 ID 为 11 的产品,而不是因为您没有 ID 为 953 的产品。

标签: sql oracle ora-02291


【解决方案1】:

检查您的外键定义。不应该吗

CONSTRAINT "TFMODE_PRODUCT_FK1" FOREIGN KEY ("F_PRODUCT") REFERENCES 
 "DESIGN"."PRODUCT" ("ID") ENABLE
) 

在发布的一个中,您正在链接两个没有多大意义的主键

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2018-04-18
    • 2014-06-12
    • 2018-05-23
    • 2021-07-18
    相关资源
    最近更新 更多