我有一个数据库,有几个表。 “主”表,称为contacts
,存储有关联系人的信息,每一个都具有id
,姓名等..MySQL,外键约束没有任何区别
我也有一样,其他20桌,每一个代表一个特定的功能,如staff
,media
.. 。
这些函数表中的每一个都使用外键引用联系人表。我最近添加了这个约束到所有的表,以下查询,这里的表staff
:
ALTER TABLE staff ADD contactsConstraint FOREIGN KEY (c_id) REFERENCES contacts(id) ON UPDATE CASCADE ON DELETE CASCADE
。
如果我更改了联系人中的一行,我也希望更改显示在职员表中 - 反之亦然。但是这个限制似乎没有什么区别! 它所做的唯一的事情是,如果我尝试向staff
添加一行,其中c_id
值不存在于contacts
表中,则会抛出错误。
我做错了什么?应该指出的是,我最近将数据库引擎更改为InnoDB,以确保我的约束条件可行。
我也尝试删除ON DELETE CASCADE
,所以只有对表的更新才会在两个表中生效,但也没有效果。
'如果我在联系人中更改了一行,我也希望更改显示在职员表'=>这听起来像是您在联系人和职员中存储了相同的字段信息。规范化! – lexu 2010-02-12 13:41:23