Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL是对多个关系执行删除操作的最佳解决方案_Sql_Jpa - Fatal编程技术网

SQL是对多个关系执行删除操作的最佳解决方案

SQL是对多个关系执行删除操作的最佳解决方案,sql,jpa,Sql,Jpa,我想澄清一下删除多重关系的问题 我有一个模式,它有一个表'a'和其他模式表,这些表在删除操作中引用了角色(级联)为'a' 还有一些表引用了“A”,也有其他对“A”的其他表的引用,但在这种情况下,消去值必须为空值 CREATE TABLE A (A_ID INTEGER PK ... ) CREATE TABLE B (B_ID INTEGER PK A_ID INTEGER NOT NULL ... FOREIGN KEY A_ID REFERENCES A(A_ID) ON DELETE

我想澄清一下删除多重关系的问题

我有一个模式,它有一个表'a'和其他模式表,这些表在删除操作中引用了角色(级联)为'a'

还有一些表引用了“A”,也有其他对“A”的其他表的引用,但在这种情况下,消去值必须为空值

CREATE TABLE A
(A_ID INTEGER PK
...
) 

CREATE TABLE B
(B_ID INTEGER PK
A_ID INTEGER NOT NULL
...
FOREIGN KEY A_ID REFERENCES A(A_ID) ON DELETE CASCADE
)

CREATE TABLE C
(C_ID INTEGER PK
A_ID INTEGER NOT NULL
B_ID INTEGER
...
FOREIGN KEY A_ID REFERENCES A(A_ID) ON DELETE CASCADE
FOREIGN KEY B_ID REFERENCES B(B_ID) ON DELETE SET NULL
)
这些多个关系导致角色删除操作出现问题

我有两个选择:

首先,承担与“A”的cascade all关系的角色,但这意味着我必须创建一个函数,当我必须删除表“A”的值时,该表的另一个值引用将从下至上删除。将来我可能会忘记添加新表

第二个解决方案和创建与其报告义务的连接表具有空值:

CREATE TABLE C
(C_ID INTEGER PK
A_ID INTEGER NOT NULL
...
FOREIGN KEY A_ID REFERENCES A(A_ID) ON DELETE CASCADE
)

CREATE TABLE C_B
(C_ID INTEGER PK
B_ID INTEGER PK
...
FOREIGN KEY C_ID REFERENCES C(C_ID) ON DELETE CASCADE
FOREIGN KEY B_ID REFERENCES B(B_ID) ON DELETE CASCADE
)
它涉及到创建几个新的桥接表

这个案子有不同的解决方案吗

我目前使用ApacheDerby和JPA进行持久化