作者razor (=_=)
看板Database
标题Re: [SQL ] 恭贺开板顺便发问
时间Thu Jun 22 21:51:16 2006
※ 引述《MrMarcus (请勿忘记密码)》之铭言:
: 看来似乎很多人都不晓得mysql有foreign key constrain喔?
: 在建立资料表的时候只要选用Innodb作为资料表格式(很多状况下新建立
: 的资料表格式是myisam,这种格式就没有foreign key constrain了),
: 不但有transaction功能也有foreign key constrain,而且这从mysql 3.2x
: 的时代就有了(至少两三年以上),不是最近的事情。
: 你所说的B资料表的记录参照到A资料表,当A资料表某笔记录被删掉,造成
: B资料表中参照到该被删资料的记录都变成无主孤魂的问题,就是要靠
: foreign key constrain来处理(当然你也可以在应用程式的层级自己写
: 程式码处理这个问题,但是在资料库层级做好各资料表之间的关连与限制
: 是好的,而且省事多了)。设定正确的话,你可以有以下选择
应该修正一下你所说的foreign key constraint.
在资料库理论中,我们所讲的constraint是提供限制,
它禁止某个动作,但是它并不会除了禁止之外,额外执行一些程序.
Foreign key constraint (reference constraint) 的本意是,
若要删掉的记录是被参考的,就不能够删掉.
你之後所提的删掉某记录,就把参考该记录的其他记录删掉,
这不是foreign key constraint,而是trigger.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.160.214.21