小编典典

是否应该在数据库级别处理唯一字段的验证?

sql

我正在为我的BSc项目编写相当大的Web应用程序,并使用MySQL在PHP中编写它。

创建SQL表时,我应该使用唯一字段吗?我之所以这样问,是因为我正在向PHP中编写验证方法。例如,如果我想检查数据库中是否已经存在电子邮件地址,我将首先执行一条SQL语句,查看是否返回了任何电子邮件地址,然后将初始SQL数据插入数据库中。

如果我只是插入初始SQL数据,则它将在整个语句上引发错误,因为电子邮件地址必须是唯一的。

这是进行验证的正确方法吗?


阅读 40

收藏
2021-04-22

共1个答案

小编典典

好吧…这是两件完全不同的事情。通过在数据库的列上设置约束(例如唯一),可以防止将错误的数据集插入数据库。这是确保数据一致性的基本内容。通过向您的应用程序添加验证,您可以添加另一层。在防止将错误的数据集插入数据库的同时,您主要创建一种手段来告诉用户他做错了什么。

您需要两个。通常,唯一约束不应仅是照顾数据库的事情。建议还使用外键约束,如果适用,还应使用更复杂的数据验证(自定义约束)。但是,当您使用MySQL时,实际上并没有很多可用的功能

尽力而为,因为最终它可以避免很多麻烦,直到您最终意识到数据库中的数据是错误的,然后才弄清楚为什么会发生特定的错误。那真的很痛苦。

2021-04-22