检查约束是邪恶的吗?

时间:2016-12-16 11:18:18

标签: mysql sql

我的问题很简单:sql检查邪恶吗?我的意思是,尤其是那些我们可以在客户端上执行的检查。

这可能是历史上最短的问题,但这是一个严肃的问题。

2 个答案:

答案 0 :(得分:5)

检查约束绝对是邪恶。

约束的目的是让数据库保持数据完整性。通过验证进入列的数据来维护数据完整性的某些方面。数据库是进行这些检查的适当位置。

实际上,我会反驳相反的观点。数据完整性验证应该在数据库中,而不是在应用程序层。某些类型的约束(例如唯一性)无法在应用程序级别轻松维护。

答案 1 :(得分:2)

您的意思是CHECK CONSTRAINT,但您已使用不支持MySQL的{​​{1}}标记。无论如何,检查约束是在将数据插入列之前验证业务约束(例如:age必须小于100)。

是的,如果您可以在应用程序层执行相同的验证并且一旦有效,那么只会将数据传递到数据库层,否则会向最终用户抛出一些验证消息。这样,您也可以保存到DB的往返。