子表不会被删除

时间:2014-02-06 10:00:35

标签: mysql

我在mysql中创建了两个表,

  1. 客户
  2. house表,其中houseID是我的客户表中的外键。

    Create customer table(
    id int not null primary key auto_increment,
    name varchar not null,
    houseId int not null,
    telephoneNo, int not null,
    CONSTRAINT FOREIGN KEY (houseId) REFERENCES house(id) ON DELETE CASCADE);
    
    
    
    CREATE house table(id int not null primary key auto_increment,
                       houseNo int not null,
                       address varchar not null);
    
  3. 但是,当我删除具有特定houseId的customer时,虽然我在customer表中添加了delete cascade,但是house表中的行不会被删除。知道为什么吗?

1 个答案:

答案 0 :(得分:0)

你的外键在错误的桌子上。你设置它的方法是,如果你删除一个房子,相应的cutomer将被级联。

您需要将一个customerId外键放在house表中,并从侧面触发ON DELETE CASCADE外键。

使用外键时,ON DELETE会询问:如果我引用的外键被删除(cascade,set null,什么都不做)怎么办? 当此行被删除时该怎么做。