gpt4 book ai didi

mysql - djangos unique=true 实际上做了什么?

转载 作者:行者123 更新时间:2023-11-29 05:47:46 25 4
gpt4 key购买 nike

我假设它验证该字段对于同一表中的所有其他条目都是唯一的。但是如果真的发生碰撞会发生什么? django 会崩溃吗?或者它只是继续重新运行默认生成器,直到它找到一个唯一的值?我可以只使用我想要的任何蹩脚的随机数/字符串生成器并假设 django 将确保始终设置唯一值吗?那样的话,如果所有的值都取了,是不是就陷入死循环了?

最佳答案

I assume it verifies that the field is unique to all other entries in the same table.

它使该特定字段唯一,这意味着不能(同时)存在具有相同值的两个实体。重要的是要注意,唯一性约束适用于NULL 值:实际上,在唯一列具有NULL 的情况下,可以同时存在两个或多个记录> 所有这些记录。

唯一性通常在数据库级别强制执行(假设数据库可以强制执行)。如果您创建的记录的值已被采用,创建过程将引发 IntegrityError。实际上,它会引发类似以下内容:

>>> Model.objects.create(name='foo')
<Model: Model object (1)>
>>> Model.objects.create(name='foo')

django.db.utils.IntegrityError: (1062, "Duplicate entry 'foo' for key 'model_name_72507083_uniq'")

因此它不会重新运行默认构造函数。您有责任确保生成器每次都会构造一个有效值。因此它不会陷入无限循环,但如果函数填充的默认值已经存在,则会引发错误。

关于mysql - djangos unique=true 实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58052508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com