Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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 在外键上使用ON DELETE CASCADE选项_Sql_Oracle_Foreign Keys_Sql Delete - Fatal编程技术网

Sql 在外键上使用ON DELETE CASCADE选项

Sql 在外键上使用ON DELETE CASCADE选项,sql,oracle,foreign-keys,sql-delete,Sql,Oracle,Foreign Keys,Sql Delete,在外键上使用DELETE CASCADE时,CASCADE选项是否仅适用于同一表中的条目 考虑使用以下选项创建的表Employee: 约束EMPK外键(超级ssn)引用员工(ssn) 在删除级联时在更新级联时 在数据库状态下运行以下命令时会发生什么 如图5.6所示?删除Lname='Borg'的员工 答案是,所有以博格为经理的员工都将被删除,所有以博格为经理的员工也将被删除,等等(请注意,解决方案并非出自本书作者,这就是我在这里提问的原因) 我认为包括该员工在内的所有内容也会被删除,例如,他是经

在外键上使用DELETE CASCADE时,CASCADE选项是否仅适用于同一表中的条目

考虑使用以下选项创建的表Employee:

约束EMPK外键(超级ssn)引用员工(ssn) 在删除级联时在更新级联时

在数据库状态下运行以下命令时会发生什么 如图5.6所示?删除Lname='Borg'的员工

答案是,所有以博格为经理的员工都将被删除,所有以博格为经理的员工也将被删除,等等(请注意,解决方案并非出自本书作者,这就是我在这里提问的原因)

我认为包括该员工在内的所有内容也会被删除,例如,他是经理的部门“总部”,等等。什么是正确的


您正在显示一个自引用外键,该外键将员工的经理与代表经理的同一表中的相应记录关联起来:这是一个层次结构

当一个父项被删除时(这就是Borg的意思),所有子项都会被递归地自动删除。表中的所有员工都直接或间接引用了博格,因此表中的所有记录都将被删除

我认为包括该员工在内的所有内容也将被删除,例如,他是经理的部门“总部”,等等。。什么是对的


问题中提供的信息并不表明存在任何此类情况。为此,通常应在表
部门
中设置一个外键,以将列
经理ssn
关联到表
员工
中的列
ssn
,并使用
on delete cascade
选项。尽管它可能存在,但在所问的问题中没有迹象表明它存在。

您显示的是一个自引用外键,它将员工的经理与代表经理的同一个表中的相应记录关联起来:这是一个层次结构

当一个父项被删除时(这就是Borg的意思),所有子项都会被递归地自动删除。表中的所有员工都直接或间接引用了博格,因此表中的所有记录都将被删除

我认为包括该员工在内的所有内容也将被删除,例如,他是经理的部门“总部”,等等。。什么是对的


问题中提供的信息并不表明存在任何此类情况。为此,通常应在表
部门
中设置一个外键,以将列
经理ssn
关联到表
员工
中的列
ssn
,并使用
on delete cascade
选项。尽管它可能存在,但在所问的问题中没有迹象表明它存在。

我只想指出,如果您正在学习Oracle方言SQL,那么您发布的外键定义是无效的。Oracle不支持关于更新级联的
子句。所以从技术上讲,答案应该是当您尝试创建外键时,外键会抛出一个错误,随后的
delete
语句只会删除单个“Borg”行。我要注意的是,如果您正在学习SQL的Oracle方言,那么您发布的外键定义是无效的。Oracle不支持关于更新级联的
子句。因此,从技术上讲,答案应该是当您尝试创建外键时,外键会抛出一个错误,随后的
delete
语句只会删除单个“Borg”行。