有人可以检查我的代码吗?它说外键约束的形成不正确

问题描述 投票:0回答:1

我尝试运行我的代码来为我的学校年终项目制作表格,但它说外键约束的形成不正确。而且它是马来语的,因为这是我学校使用的语言。

create table `Kehadiran` (
   `IC_Guru` int(12) auto_increment,
   `Kod_Aktiviti` varchar(10),
   `IC_Murid` varchar(12),
   `Masa_hadir` varchar(20),
    
    primary key(`IC_Guru`)
    
    foreign key(`IC_Murid`)
    REFERENCES `kelas` (`IC_Murid`)
    on update cascade on delete CASCADE
)
mysql phpmyadmin foreign-keys
1个回答
0
投票

一个问题是主键定义后缺少一个逗号。我不知道这是否在您的原始代码中,或者只是在您将其发布到 Stack Overflow 时丢失了。

create table `Kehadiran` (
   `IC_Guru` int(12) auto_increment,
   `Kod_Aktiviti` varchar(10),
   `IC_Murid` varchar(12),
   `Masa_hadir` varchar(20),
    
    primary key(`IC_Guru`)
                          ^ missing comma here        
    foreign key(`IC_Murid`)
    REFERENCES `kelas` (`IC_Murid`)
    on update cascade on delete CASCADE
)

除此之外,除非满足以下所有条件,否则您会收到错误:

  • 在尝试在外键中引用表之前,您已经创建了表
    kelas
  • IC_Murid
    表中的
    kelas
    列是该表的主键或唯一键。
  • IC_Murid
    与在外键中引用它的
    varchar(12)
    列具有相同的数据类型 (
    Kehadiran
    ) 和字符集。

您可能想在这里阅读更完整的外键要求清单:https://stackoverflow.com/a/4673775/20860

我还在我的书SQL反模式卷1:避免数据库编程的陷阱中写了一章解释可能的外键错误。

© www.soinside.com 2019 - 2024. All rights reserved.