标签: foreign-keys

如何删除具有双向依赖关系的行?

我正在使用Oracle 10g Express并尝试从具有双向约束的表中删除记录.我试图解开数百个表和通过Hibernate生成的依赖项(此时无法更改),但这是一个非常简化的示例:

create table TableA (id number(19,0) not null, ..., rTableA_id number(19,0), primary key (id));
create table TableB (id number(19,0) not null, ..., rTableB_id number(19,0), primary key (id));

alter table TableA add constraint FKA1 foreign key (rTableA_id) references TableB;
alter table TableB add constraint FKB1 foreign key (rTableB_id) references TableA;
Run Code Online (Sandbox Code Playgroud)

尝试从任一表中删除条目将返回以下内容:
编辑:在我的情况下,这种情况发生在外键上,前缀为SYS_

ORA-02292: integrity constraint (XXX.FKA1) violated - child record found
Run Code Online (Sandbox Code Playgroud)

我也尝试禁用约束,但所有尝试都是徒劳的:

ORA-02297: cannot disable constraint (XXX.FKA1) - dependencies exist
Run Code Online (Sandbox Code Playgroud)

oracle constraints foreign-keys delete-row

1
推荐指数
1
解决办法
3764
查看次数

sql外键错误

我想创建这两个表,但我收到一个错误,说明由HOLD的外键引用的SECTION键不是主键.正如在查询中看到的那样,它们是主键.我怎么解决这个问题?

create table SECTION( 
ID integer foreign key references TERM(ID),
CID integer foreign key references COURSE(CID),
SECT integer,
constraint PK_SECTION primary key (ID,CID,SECT),
);

create table HOLD( 
NAME varchar(30) foreign key references INSTRUCTOR(NAME),
ID integer foreign key references SECTION(ID),
CID integer foreign key references SECTION(CID),
SECT integer foreign key references SECTION(SECT),
constraint PK_HOLD primary key (NAME,ID,CID,SECT),
);
Run Code Online (Sandbox Code Playgroud)

sql foreign-keys sql-server-2008

1
推荐指数
1
解决办法
243
查看次数

Postgres:相同主键字段的两个外键

create table date_dimension (
id serial primary key,
date_id date,
..... others
);

create table temp (
id serial primary key,
from_date integer,
to_date integer,
value integer,
foreign key (from_date, to_date) references date_dimension(id, id)
);  
Run Code Online (Sandbox Code Playgroud)

我怎样才能既指from_dateto_dateid现场date_dimension
目前的代码没有这样说

ERROR:  there is no unique constraint matching given keys for referenced table "date_dimension"  
Run Code Online (Sandbox Code Playgroud)

谢谢

database postgresql foreign-keys

1
推荐指数
1
解决办法
4195
查看次数

Oracle删除性能

说我有两张桌子:

create table parent (
  id number not null,
  constraint parent_pk primary key(id),
)

create table child (
  id number not null,
  parent_id number not null,
  constraint child_pk primary key(id),
  constraint child_fk1 foreign key(parent_id)
    references parent(id)
)
Run Code Online (Sandbox Code Playgroud)

父表很大,比如300万条记录.现在我运行delete语句:

delete from parent; //even without where clause
Run Code Online (Sandbox Code Playgroud)

你能解释一下执行这个陈述时实际发生了什么吗?其中没有指定"ON DELETE CASCADE"选项,据我所知,这意味着如果子表包含对父ID的引用,则从父表中删除应该失败.所以这意味着在从父表中删除行之前,Oracle应检查是否存在任何子记录.但这真的非常慢 - 它是逐行删除.

我对么?如果没有,请解释Oracle从父表中删除时的工作原理,并检查子表中是否还没有孤立?

oracle performance foreign-keys

1
推荐指数
1
解决办法
3861
查看次数

MongoDB ObjectId外键实现建议

我正在寻找关于如何最好地实现MongoDB外键ObjectId字段的建议.似乎有两种可能的选项,包括嵌套_id字段或不包含嵌套字段.

看看下面的fkUid字段.

{'_id':ObjectId('4ee12488f047051590000000'), 'fkUid':{'_id':ObjectId('4ee12488f047051590000001')} } 
Run Code Online (Sandbox Code Playgroud)

要么

{'_id':ObjectId('4ee12488f047051590000000'), 'fkUid':ObjectId('4ee12488f047051590000001')} }
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激.

database foreign-keys mongodb nosql pymongo

1
推荐指数
1
解决办法
5261
查看次数

如何在mysql中为具有不相关数据的列添加外键?

我有两个需要相关的表 - 一个用户表和一个address_book表我希望每个地址簿条目与user_id相关联,这样当我删除用户时,他们的地址簿条目就会被删除.但我在地址簿中也有大约10000个条目,这些条目在所有用户之间共享.每个条目的用户ID字段设置为0.没有id为0的用户.如果那里的子/父关系破坏,MySQL将不允许我为该字段创建外键.除了id为0之外,我如何在address_book表中为所有用户设置外键?

mysql foreign-keys

1
推荐指数
1
解决办法
44
查看次数

SQL Server外键约束 - 对(相同元组)

假设这两个表:

TBL1

ID
name
fkID1
fkID2
Run Code Online (Sandbox Code Playgroud)

TBL2

ID
pkID1
pkID2
Run Code Online (Sandbox Code Playgroud)

无论何时插入数据tbl1,我如何确保在表单中(fkID1, fkID2)存在行(元组)?tbl2(pkID1, pkID2)

我没有问题制定约束所以fkID1必须存在并且fkID2必须存在但我想确保它们存在于同一行中.

通过SQL或通过管理工作室创建它的说明将是伟大的.

sql sql-server constraints foreign-keys sql-server-2008

1
推荐指数
1
解决办法
1689
查看次数

复合主键中的外键

我有以下3个表格:

TBLA

ID - PK
name
Run Code Online (Sandbox Code Playgroud)

TBLB

ID - PK
tblAID - FK references tblA.ID
pkID2
Run Code Online (Sandbox Code Playgroud)

TBLC

ID - PK
tblAID *
fkID2 *
...
Run Code Online (Sandbox Code Playgroud)

我想让这个元组成为FK的 (tblB.tblAID, tblB.pkID2)

如果我这样做:

alter table tblC with check 
add constraint FK_tblC_tblB 
foreign key (tblAID, fkID2) 
references tblB (tblAID, pkID2)
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

引用表'tblB'中没有与外键'FK_tblC_tblB'中的引用列列表匹配的主键或候选键

即:我想确保插入的元组对tblC存在tblB.但我不能这样做,因为pkID2它不是关键.真的tblB可以tblAID, pkID2作为复合主键.但那时tblAID仍然必须是FK tblA.ID.

sql sql-server constraints foreign-keys primary-key

1
推荐指数
1
解决办法
2910
查看次数

主键和外键

我有3张桌子

   Student    Loan    Book
 - StudentID  LoanID  BookID
Run Code Online (Sandbox Code Playgroud)

我需要设置哪些外键,因此在给出学生姓名时,搜索该学生的所有贷款并显示书籍详细信息

foreign-keys primary-key sql-server-2008

1
推荐指数
1
解决办法
1025
查看次数

SQL Server:无法创建关系

我试图创建一个具有一对多关系的表.但似乎在Personal中添加外键不起作用.我想将个人信息表链接到地址表?这个错误的解决方案是什么?

  • Address 表已成功保存
  • Personal

无法创建关系'FK_Personal_Address'.
无法在引用列"Personal.ID"为标识列的位置创建级联外键"FK_Personal_Address".无法创建约束.查看以前的错误.

sql-server sql-server-2005 foreign-keys foreign-key-relationship sql-server-2008

1
推荐指数
2
解决办法
1万
查看次数