GAE 中数据级别的唯一约束

Posted

技术标签:

【中文标题】GAE 中数据级别的唯一约束【英文标题】:Unique Constraint At Data Level in GAE 【发布时间】:2011-02-07 06:59:56 【问题描述】:

虽然one can enforce unique check before putting an object to store,但 GAE 似乎不支持 unique 约束。

但那是在 2009 年 1 月,那现在呢?我可以在模式创建期间对列指定unique 约束吗?即

class Account(db.Model):
  name = db.StringProperty()
  email = db.StringProperty() as unique # something like this
  @classmethod
  def create(cls, name, email):
    a = Account(name=name, email=email)
    a.put()
    return a

【问题讨论】:

【参考方案1】:

不,您仍然不能在架构创建期间指定唯一性。

这个问题位于here,以防你想看它。它还没有出现在他们的features on deck 列表中,所以看起来他们将首先开发其他功能。

【讨论】:

支持键名以外的唯一属性需要全局事务,因此我们不太可能很快添加它。目前,您可以通过键名或“后备”实体自行实现唯一性。【参考方案2】:

您可以在应用引擎的数据存储as described here 中实现“唯一约束”。该示例以 Java 呈现,但您应该能够在 python 中应用相同的概念。

【讨论】:

以上是关于GAE 中数据级别的唯一约束的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework 6 Code First 方法 - 唯一约束不起作用

mysql中的约束

Oracle复习约束以及视图

mysql RC 隔离级别下为什么需要 next key lock 来保证唯一索引有效性

mysql RC 隔离级别下为什么需要 next key lock 来保证唯一索引有效性

SQL中如何设置唯一性约束