pp泉 2021-03-27 13:27 采纳率: 50%
浏览 72
已采纳

求大神看看,mysql主键和外键为什么没有关联

create database studentsdb;

alter database studentsdb character set utf8;

use studentsdb;

 

create table student_info(

student_id char(4) not null primary key,

student_name char(8) not null,

sex char(2),

birthday date,

address varchar(50));

 

create table curriculum(

class_id char(4) not null primary key,

class_name varchar(50),

credit int);

 

create table grade(

student_id char(4),

class_id char(4),

score int);

 

alter table grade add primary key(student_id,class_id);

 

alter table grade add constraint fk_student_id foreign key(student_id) references student_info(student_id) on delete cascade;

 

alter table grade add constraint fk_class_id foreign key(class_id) references curriculum(class_id) on delete cascade;

 

insert into student_info(student_id,student_name)values('1001','张三');

 

insert into curriculum(class_id)values('123');

前面把grade表的student_id和class_id都设为了外键,但是下面插入主键中没有的值为什么还是可以插入?

insert into grade(student_id,class_id,score)values('1002','456',85);

  • 写回答

3条回答 默认 最新

  • 沐川 2021-03-27 19:14
    关注

    增加两个索引:

    alter table grade add key (student_id);
    alter table grade add key (class_id);

    参考资料:https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html#foreign-key-restrictions

    MySQL requires indexes on foreign keys and referenced keys so that foreign key checks can be fast and not require a table scan. In the referencing table, there must be an index where the foreign key columns are listed as the first columns in the same order. Such an index is created on the referencing table automatically if it does not exist. This index might be silently dropped later if you create another index that can be used to enforce the foreign key constraint. index_name, if given, is used as described previously.

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类