Mysql DELETE ON CASCADE将无法正常工作

时间:2014-05-23 17:30:52

标签: mysql sql parent-child cascade sql-delete

Hello Stackoverflow人员

我有一个名为

的父表
  • 字符_,

和两个子表叫:

  • Learned_Skills
  • Learned_Talents

我想要实现的是当我从Character_中删除一个人时,它还会从表Learned_skills和Learned_Talents中删除所有信息。 我知道需要一个ON DELETE CASCADE,但是,当我尝试删除一个人时,它不会删除子表上的信息,我做错了什么?

CREATE TABLE character_ ( 
  Name_             varchar (30) NOT NULL,
  Class             varchar (30),
  World_Type        varchar (15),
  Str               integer     ,
  WS                integer     ,               
  BS                integer     ,
  Fel               integer     ,
  Per               integer     ,
  Int_              integer     ,
  Agi               integer     ,
  WP                integer     ,
  Tough             integer     ,  
  PRIMARY KEY (Name_)           ,
  FOREIGN KEY (Class) REFERENCES Class(Class_name),
  FOREIGN KEY (World_Type) REFERENCES World_Type(Name_)     );


 CREATE TABLE Learned_Talents ( 
  Character_Name    varchar (30) NOT NULL,
  Talent_Name       varchar (40) NOT NULL,
  PRIMARY KEY (Character_Name,Talent_Name),
  FOREIGN KEY (Character_Name) REFERENCES character_(Name_) ON DELETE CASCADE,
  FOREIGN KEY (Talent_Name) REFERENCES Talents(TalentName)  );


  CREATE TABLE Learned_Skills ( 
  Character_Name    varchar (30) NOT NULL,
  Skill_Name        varchar (40) NOT NULL,
  PRIMARY KEY (Character_Name,Skill_Name),
  FOREIGN KEY (Character_Name) REFERENCES character_(Name_) ON DELETE CASCADE,
  FOREIGN KEY (Skill_Name) REFERENCES Skills(SkillName) );

0 个答案:

没有答案