外键级联选项和创建触发器之间有什么区别?

时间:2014-01-21 14:28:10

标签: mysql database database-design triggers

项目要求我构建一个java应用程序,允许用户快速创建,更新和删除人工报告(以前手工完成)。

我显然需要一个数据库,并且过去一周都在研究和慢慢设计,但似乎无法清楚地定义外键级联选项和创建触发器之间的区别。他们有什么不同吗?或者只是两种方法来完成我的相同任务?

我问这个是因为希望对一个表中特定字段的更改反映在引用它的所有相关表中。

我使用MySQL和MySQL Workbench进行建模和最终正向工程。

1 个答案:

答案 0 :(得分:2)

触发器可以运行任意代码。您可以通过触发器实现外键(有或没有级联)。

外键(有或没有级联)执行一项特定的重点工作。在大多数数据库系统中,您将无法编写比内置支持外键的代码更高效的触发器(有很多方法可以编写效率较低的触发器)。

对于MySQL,您可能需要考虑它支持多个存储引擎,并且不同引擎在支持各种外键功能方面存在差异(请参阅Using FOREIGN KEY constraints。如果您计划使用的引擎不存在不支持您想要使用的功能,那么您别无选择,只能使用触发器。