注册 登录
编程论坛 SQL Server论坛

外键的级联更新问题

小水滴 发布于 2007-03-29 16:10, 1064 次点击
数据库中有三个表:
表一中有:student_id char(5) primary key
表二中有:course_id char(3) primary key

表三中有:student_id char(5)
course_id char(3)

现欲设定表三中的student_id列和course_id列分别是表一和表二的外键,并且级联更新、级联删除。
create table t1
(student_id char(5) references student(student_id) on update cascade on delete cascade,
course_id char(3) references course (course_id) on update cascade on delete cascade,
grade numeric(4,1) )

现在的问题是不能同时二个列的外键都设置成级联更新、级联删除(一个列是可以的)。

哪位朋友有办法?

6 回复
#2
棉花糖ONE2007-03-29 16:13
我感觉从数据库的完整性考虑的话,这个是不能实现的
#3
Kendy1234562007-03-29 16:30
不用想办法了 不可能实现的 而且也是不合逻辑的
#4
小水滴2007-03-29 16:58
以下是引用Kendy123456在2007-3-29 16:30:04的发言:
不用想办法了 不可能实现的 而且也是不合逻辑的

在access中是可以实现的,在SQL中为什么不能实现呢?什么道理啊?

[此贴子已经被作者于2007-3-29 16:58:48编辑过]

#5
cyyu_ryh2007-03-29 17:09
#6
Kendy1234562007-03-29 17:36
由单个 DELETE 或 UPDATE 触发的一系列级联引用操作必须构成不包含循环引用的树。
在 DELETE 或 UPDATE 所产生的所有级联引用操作的列表中,每个表只能出现一次。
级联引用操作树到任何给定表的路径必须只有一个。
树的任何分支在遇到指定了 NO ACTION 或默认为 NO ACTION 的表时终止。

而且 级联的操作是单向的
#7
小水滴2007-03-30 09:27
终于理解了,谢谢各位!

1