标签: unique-constraint

EF Core 中不区分大小写的索引映射

是否可以使用 Fluent API 在实体框架核心中创建不区分大小写的唯一索引?

例如,可以使用以下 SQL 在 Oracle 中定义不区分大小写的唯一索引:

create unique index test on "Person"(lower("Name"));
Run Code Online (Sandbox Code Playgroud)

但是,据我所知,EF Core 中的唯一选项是区分大小写的唯一约束,例如:

builder.HasIndex(e => e.Name)
            .IsUnique();
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以下方法,但它不起作用:

builder.HasIndex(e => e.Name.ToLower())
            .IsUnique();
Run Code Online (Sandbox Code Playgroud)

oracle entity-framework unique-constraint entity-framework-core ef-fluent-api

5
推荐指数
1
解决办法
796
查看次数

Django在两个方向上唯一的共同约束

所以我有一些看起来像这样的模型

class Person(BaseModel):
    name = models.CharField(max_length=50)
    # other fields declared here...
    friends = models.ManyToManyField(
        to="self",
        through="Friendship",
        related_name="friends_to",
        symmetrical=True
    )

class Friendship(BaseModel):
    friend_from = models.ForeignKey(
        Person, on_delete=models.CASCADE, related_name="friendships_from")
    friend_to = models.ForeignKey(
        Person, on_delete=models.CASCADE, related_name="friendships_to")
    state = models.CharField(
        max_length=20, choices=FriendshipState.choices, default=FriendshipState.pending)
Run Code Online (Sandbox Code Playgroud)

基本上,我正在尝试模拟一种类似 Facebook 的好友场景,其中有不同的人,并且可以邀请任何其他人成为好友。这种关系是通过最后一个模型来表达的Friendship

到目前为止,一切都很好。但我想避免三种情况:

    1. 友谊不能在friend_fromfriend_to领域有同一个人
    1. Friendship一组两个朋友只允许使用一个。

我最接近的是将其添加到Friendship模型下:

class Meta:
    constraints = [
        constraints.UniqueConstraint(
            fields=['friend_from', 'friend_to'], name="unique_friendship_reverse"
        ),
        models.CheckConstraint(
            name="prevent_self_follow",
            check=~models.Q(friend_from=models.F("friend_to")),
        )
    ]
Run Code Online (Sandbox Code Playgroud)

这完全解决了情况1,避免某人与自己交朋友,使用CheckConstraint. 并部分解决了第二种情况,因为它避免了Friendships这样的两种情况:

p1 = Person.objects.create(name="Foo") …
Run Code Online (Sandbox Code Playgroud)

django django-models unique-constraint python-3.x

5
推荐指数
1
解决办法
2168
查看次数

SQL Server:"非常独特"的索引

在表中,我想确保在五列密钥上只存在唯一的值:

Timestamp Account RatingDate TripHistoryKey EventAction
========= ======= ========== ============== ===========
2010511   1234    2010511    1              INSERT
2010511   1234    2010511    4              INSERT
2010511   1234    2010511    7              INSERT
2010511   1234    2010511    1              INSERT   <---duplicate
Run Code Online (Sandbox Code Playgroud)

我只希望唯一约束,以行之间适用时EventActionINSERT:

Timestamp Account RatingDate TripHistoryKey EventAction
========= ======= ========== ============== ===========
2010511   1234    2010511    1              INSERT
2010511   1234    2010511    1              UPDATE
2010511   1234    2010511    1              UPDATE   <---not duplicate
2010511   1234    2010511    1              UPDATE   <---not duplicate
2010511   1234    2010511    1              DELETE   <---not duplicate
2010511 …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2005 sql-server-2000 unique-constraint multiple-columns

4
推荐指数
1
解决办法
146
查看次数

在不知道约束名称的情况下删除表列上的唯一约束

在Oracle 10g中,如何在不知道约束名称的情况下删除列上的唯一约束(例如,系统生成的名称,在数据库实例中不一定相同)?删除并重新创建表不是一种选择.可能吗?

sql oracle10g unique-constraint

4
推荐指数
1
解决办法
2827
查看次数

添加sql表的唯一约束作为另一个sql表的外键引用

如何添加sql表的唯一约束作为sql server 2005中另一个sql表的外键引用

sql-server unique-constraint

4
推荐指数
2
解决办法
3万
查看次数

如何使用<xs:unique>作为<xs:element>标记的子元素为属性指定唯一约束?

如果我在XSD中有以下元素规范,我可以将<xs:unique>约束添加为子项,<xs:element name="Parent">但我不能让它作为子项工作<xs:element name="Child">:

<xs:element name="Parent">
  <xs:complexType>
    <xs:element name="Child" minOccurs="0" maxOccurs="unbounded">
      <xs:complexType>
        <xs:attribute name="Key" type="xs:string" use="required" />
      </xs:complexType>

      <!-- Option A: insert unique constraint here with selector . -->

    </xs:element>
  </xs:complexType>

  <!-- Option B: insert unique constraint here with selector ./Child -->

</xs:element>
Run Code Online (Sandbox Code Playgroud)

这是作为孩子的唯一约束<xs:element name="Parent">:

<xs:unique name="ChildKey">
  <xs:selector xpath="./Child"/>
  <xs:field xpath="@Key" />
</xs:unique>
Run Code Online (Sandbox Code Playgroud)

但是这种独特的约束并不适合作为孩子<xs:element name="Child">:

<xs:unique name="ChildKey">
  <xs:selector xpath="."/>
  <xs:field xpath="@Key" />
</xs:unique>
Run Code Online (Sandbox Code Playgroud)

在第二种情况下是否需要更改选择器XPath?

xsd unique-constraint

4
推荐指数
1
解决办法
5846
查看次数

oracle中的条件唯一约束

我目前已将此约束添加到表中 MY_TABLE

ALTER TABLE MY_TABLE ADD CONSTRAINT MY_TABLE_UNQ_01 UNIQUE (COLUMN1, COLUMN2, COLUMN3) USING INDEX TABLESPACE "MY_TABLE_INDEX";

问题是我添加了一个新列:

ALTER TABLE MY_TABLE ADD (DRAFT NUMBER(1,0));

现在,约束应仅在列DRAFT= 0时应用

有什么方法可以做到这一点?

database oracle constraints unique-constraint

4
推荐指数
1
解决办法
2648
查看次数

SQL中违反的唯一约束

我正在尝试将数据添加到我的SQL数据库中,当我输入以下代码时:

INSERT INTO EMPLOYEES 
VALUES('100','STEVEN','King','sking@yahoo.com','PSEUDO',
to_date('17-JAN-87','dd-mm-yy'),'AD_VP',24000,0.45,90);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR at line 1:
ORA-00001: unique constraint (ODEHat01.SYS_C00292486) Violated
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么,因为当我描述我的表(desc employees;)时,它表明我有10个字段,我试图将数据输入到10个字段中.非常感谢任何帮助,所以我可以将数据输入我的员工表.谢谢.

sql oracle unique-constraint

4
推荐指数
1
解决办法
2万
查看次数

具有异常的PostgreSQL唯一约束

我有一张桌子:

CREATE TABLE dbo."TransportInteraction"
(
  "Id" bigint NOT NULL DEFAULT nextval('dbo."TransportInteraction_Id_seq"'::regclass),
  "Message" character varying(256),
  "TransportActionId" integer NOT NULL,
  "TimeCreated" timestamp without time zone NOT NULL,
  "TimeInserted" timestamp without time zone NOT NULL,
  "TaskId" bigint
)
Run Code Online (Sandbox Code Playgroud)

通常,此表是对任务的映射操作.TransportActionId是一种integer定义行动的类型.某些操作类型对于每个任务必须是唯一的,而有些则不是.

所以我需要一个类型约束:
UNIQUE ("TaskId", "TransportActionId")适用于所有动作TransportActionId != (2||3 || 4).

所以所有行动除了那些ActionId=2,3 or 4.

有任何想法吗?

sql postgresql indexing check-constraints unique-constraint

4
推荐指数
1
解决办法
1024
查看次数

唯一索引除了一个字符串

在SQL Server中,我想在现有表中创建一个列,该列必须具有唯一属性,但有一个例外:"ship".该表可以包含每个元素的一个副本,但是当我一次又一次地插入"ship"时它应该没问题.我该如何管理?

sql sql-server unique-constraint

4
推荐指数
1
解决办法
48
查看次数