MySQL外键:因为理解RESTRICT& UPDATE

时间:2013-10-26 20:32:36

标签: mysql sql

我有两张桌子:

1)kind_basis(基于孩子的数据)

id              bigint(20) unsigned     NO  PRI     NULL    auto_increment
vorname         varchar(64)             NO          NULL
nachname        varchar(64)             NO          NULL
geburtsland_id  bigint(20) unsigned     NO  MUL     NULL   

2)liste_land(国家列表)

id              bigint(20) unsigned     NO  PRI     NULL    auto_increment
iso             varchar(2)              NO          NULL
landname        varchar(255)            NO          NULL 

他们之间有一种关联:

ALTER TABLE `kind_basis` 
    ADD CONSTRAINT `fk_geburtsland_id` 
    FOREIGN KEY ( `geburtsland_id` ) 
    REFERENCES `liste_land` (`id`) 
    ON DELETE RESTRICT 
    ON UPDATE CASCADE ; 

为什么可以进行跟随查询?

DELETE 
    FROM  `liste_land` 
    WHERE `liste_land`.`id` = 6

我不应该收到这样的消息“你可能不会删除该行,因为它被用在另一个表中(kind_basis)?

如果我在liste_land中更新一行,它是否也会在kind_basis中更新?

2 个答案:

答案 0 :(得分:2)

ON DELETE RESTRICT表示如果子行引用该父级的值,则无法删除父行,因此您可能没有该子行。

答案 1 :(得分:0)

而不是试图删除,因为它将表格放在一起使用所有数据,避免错误,避免打破头脑并试图破译捏,或者只是为什么不尝试使用其他工具来开发这些表oracle,有mysqlWorkbench这是非常好的超级容易,并在youtube他的类有很多视频,因为我敢肯定你已经有创造和操作的智慧很容易,我的提示invez尝试删除或更新创建一个新表已经实体和属性你需要不必继续更新或删除,然后将其导入到你想要的地方