首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORM (RedBean)和重复键

ORM (RedBean)和重复键
EN

Stack Overflow用户
提问于 2011-07-31 08:39:38
回答 1查看 1.4K关注 0票数 2

我目前在我的模型中使用RedBean进行对象关系管理。

我需要将数据插入到其中一列被设置为唯一的MySQL表中。

目前,数据是通过如下形式插入的:

代码语言:javascript
复制
//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

如果我回显异常,我会得到:

代码语言:javascript
复制
[23000] - SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'abc' for key 'name_UNIQUE'

另一个问题是,如果我有多个字段被设置为唯一,异常将只告诉我第一个重复的字段。因此,为了获得下一个字段,我需要确保用户纠正了第一个重复项,并再次运行查询。

这似乎相当低效。我需要能够检查用户是否在多个字段中插入重复数据,同时不执行太多SQL语句。

执行此操作的一些最佳实践是什么?此外,当涉及到返回操作是否成功时的最佳实践是什么,或者如果操作失败,为什么以及将哪些字段返回给控制器?

谢谢您:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-31 15:58:18

您必须首先执行"select“以检查唯一条目是否还不存在,没有其他方法...如果不希望执行来自代码的多个请求,则可以实现存储过程。

它允许您在同一事务中执行多个请求,从而限制了网络开销。

它还将允许您管理多种类型的错误(通过错误代码AFAIR),这将为您提供一种方法来清楚地识别有问题的字段。

查看this link

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6886815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档