- 积分
- 92
- UID
- 16727
- 阅读权限
- 20
- 注册时间
- 2014-10-24
- 精华
- 在线时间
- 小时
- 最后登录
- 1970-1-1
- 职业
- 1
|
用下面的语句创建了两个表:
- create table Klass
- (
- KNo varchar(10) not null,
- Sno varchar(10),
- KName varchar(50),
- primary key (KNo)
- );
- create table Student
- (
- Sno varchar(10) not null,
- SName varchar(10),
- primary key (Sno)
- );
- alter table Klass add constraint FK_Relationship_1 foreign key (Sno)
- references Student (Sno) on delete restrict on update restrict;
复制代码
然后,用下面语句在两个表中分别插入一行,再将子表Klass的外键更新约束改为CASCADE方式,最后用update语句尝试更新主表Student的主键为'S002'。
- insert into Student(Sno, SName)
- values('S001', 'Tom');
- insert into Klass(KNo, Sno, KName)
- values('K001', 'S001', 'JingRong');
- alter table Klass
- add constraint foreign key(Sno) references Student(Sno)
- on update cascade;
- update Student
- set Sno = 'S002';
复制代码
按我的理解,此时子表行的外键取值应该一同更改为'S002',但得到一个错误提示。
向大家请教,是否MySQL对外键级联方式处理是否有不同的定义。谢谢!
|
|