php - ORM(RedBean)和重复键

标签 php mysql orm constraints mysql-error-1062

我目前在我的模型中将 RedBean 用于 ORM。

我需要将数据插入到其中一列设置为唯一的 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'

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

这看起来效率很低。我需要能够在不执行太多 SQL 语句的情况下检查用户是否在多个字段中插入了重复数据。

执行此操作的一些最佳做法是什么?此外,在返回操作是否成功或失败时返回 Controller 的原因和哪些字段时,最佳做法是什么?

谢谢你:)

最佳答案

您必须首先执行“选择”以检查唯一条目是否不存在,没有其他方法...如果您不想从您的代码执行多个请求,您可以实现一个存储过程。

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

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

查看 this link

希望对您有所帮助!

关于php - ORM(RedBean)和重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6886815/

相关文章:

php - Helm + Kubernetes,在 PHP 中加载和启用扩展或模块

mysql - 是否可以使用mysql编辑联合表中的数据排序?

sql - 合并两个不同表的查询结果

android - 帮助 MySQL 好友列表

python - 独立应用程序上的 Django ORM

python - 使用 Django ORM,遍历表记录,测试它们并在需要时删除记录

Postgresql - 9.1 IN 参数更改了排序顺序

php - PHP 5.5 中未记录的 SessionIdInterface 是什么?

php - Magento,将产品名称传递给联系表

php - 从 Youtube api 向 Mysql 插入数据