0

我有 2 张桌子:

1) kind_basis (child-basis-data)

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 中更新?

4

2 回答 2

2

ON DELETE RESTRICT意味着如果子行引用该父行的值,则您不能删除父行,因此您可能没有该子行。

于 2013-10-26T20:36:49.610 回答
0

不要尝试删除,因为它会将您正在使用的表一次使用所有数据,避免错误,避免打破头并尝试破译捏,或者干脆为什么不尝试使用其他工具来开发这些表 oracle,有 mysqlWorkbench 哪个非常好超级简单,并且在 youtube 上有很多视频他的课程,因为我相信你已经拥有创建和操作的智慧很容易,我的提示 invez 尝试删除或更新创建一个新表已经你需要的实体和属性不必不断更新或删除,然后将其导入到您想要的位置

于 2013-10-26T20:39:23.567 回答