我的问题很简单:sql检查邪恶吗?我的意思是,尤其是那些我们可以在客户端上执行的检查。
这可能是历史上最短的问题,但这是一个严肃的问题。
答案 0 :(得分:5)
检查约束绝对是不邪恶。
约束的目的是让数据库保持数据完整性。通过验证进入列的数据来维护数据完整性的某些方面。数据库是进行这些检查的适当位置。
实际上,我会反驳相反的观点。数据完整性验证应该在数据库中,而不是在应用程序层。某些类型的约束(例如唯一性)无法在应用程序级别轻松维护。答案 1 :(得分:2)
您的意思是CHECK CONSTRAINT
,但您已使用不支持MySQL
的{{1}}标记。无论如何,检查约束是在将数据插入列之前验证业务约束(例如:age必须小于100)。
是的,如果您可以在应用程序层执行相同的验证并且一旦有效,那么只会将数据传递到数据库层,否则会向最终用户抛出一些验证消息。这样,您也可以保存到DB的往返。