我目前在我的模型中使用RedBean进行对象关系管理。
我需要将数据插入到其中一列被设置为唯一的MySQL表中。
目前,数据是通过如下形式插入的:
//Create
$object = R::dispense('object');
//Need to check if supplied name is a duplicate
$object->name = $name
$object->description = $description
//Save
R::store($object)现在的问题是,如果没有在数据库中复制$name,一切都会正常进行。如果它是重复的,我可以捕获异常并得到SQL错误代码: 23000
如果我回显异常,我会得到:
[23000] - SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'abc' for key 'name_UNIQUE'另一个问题是,如果我有多个字段被设置为唯一,异常将只告诉我第一个重复的字段。因此,为了获得下一个字段,我需要确保用户纠正了第一个重复项,并再次运行查询。
这似乎相当低效。我需要能够检查用户是否在多个字段中插入重复数据,同时不执行太多SQL语句。
执行此操作的一些最佳实践是什么?此外,当涉及到返回操作是否成功时的最佳实践是什么,或者如果操作失败,为什么以及将哪些字段返回给控制器?
谢谢您:)
发布于 2011-07-31 15:58:18
您必须首先执行"select“以检查唯一条目是否还不存在,没有其他方法...如果不希望执行来自代码的多个请求,则可以实现存储过程。
它允许您在同一事务中执行多个请求,从而限制了网络开销。
它还将允许您管理多种类型的错误(通过错误代码AFAIR),这将为您提供一种方法来清楚地识别有问题的字段。
查看this link
希望这能有所帮助!
https://stackoverflow.com/questions/6886815
复制相似问题