日期:2014-05-16  浏览次数:20609 次

数据库的约束和触发器的区别

?约束和触发器在特殊情况下各有优势。触发器的主要好处在于 可以进行比约束更加复杂的检查和操作。因此,触发器可以支持约束的所有功能;但它在所给出的功能上并不总是最好的方法,并不是效率最高的。


实体完整性总应在最低级别上通过索引进行强制,这些索引或是 PRIMARY KEY 和 UNIQUE 约束的一部分,或是在约束之外独立创建的。假设功能可以满足应用程序的功能需求,域完整性应通过 CHECK 约束进行强制,而引用完整性 (RI) 则应通过 FOREIGN KEY 约束进行强制,所以此时一般是用约束进行完整性和一致性进行维护。


如果约束所支持的功能无法满足应用程序的功能要求时(尤其是一些复杂的操作时),触发器就极为有用。


?约束只能通过标准的系统错误信息传递错误信息。如果应用程序要求使用(或能从中获益)自定义信息和较为复杂的错误处理,则必须使用触发器。


总的来说,触发器比约束更加灵活,适合更复杂的操作,而约束则对于普通的操作而言是效率最高的;对于维护数据库的完整性、一致性,首选是约束(也就是外键、主键等)来进行操作,因为效率最高,其次是触发器,因为对于所有业务对数据库的操作都能维护数据库的完整性和一致性。