簡體   English   中英

限制一個表,以便每個帳戶可以有另一個表

[英]Constrain a table such that each account can have one of another table

我有一個包含以下列的表:

  • Id (主鍵):ID。
  • OwnerId (外鍵):所有者的ID,位於另一個表中。
  • TypeId (外鍵):此記錄表示的事物的類型。 有有限數量的類型,這些類型在另一個表中表示。 這鏈接到該表。
  • TypeCreatorId (ForeignKey):TypeId表示的類型的所有者。
  • SourceId (外鍵):這對這個問題並不重要。

我需要限制此表,以便對於每個ID,每個TypeCreatorId只能有一個。 我希望這是有道理的!

對於SQL Server,您有兩個選擇:

  1. 創建一個UNIQUE CONSTRAINT

     ALTER TABLE dbo.YourTable ADD CONSTRAINT UNIQ_Id_TypeCreator UNIQUE(Id, TypeCreatorId) 
  2. 創建一個UNIQUE INDEX

     CREATE UNIQUE INDEX UIX_YourTable_ID_TypeCreator ON dbo.YourTable(Id, TypeCreatorId) 

基本上,這兩種方法都可以實現同一件事-您不能有兩行具有相同的(Id, TypeCreatorId)值。

只需在OwnerIdTypeCreatorId上創建唯一索引。

使用MySQL的示例(抱歉,我不使用SQL Server):

alter table yourTable
    add unique index idx_newIndex(OwnerId, TypeCreatorId);

例。 我將把這個新的唯一索引放在這里:

OwnerId | TypeCreatorId
--------+--------------
   1    |    1
   1    |    2          -- This is Ok
   2    |    1          -- Ok too
   2    |    2          -- Ok again
   1    |    2          -- THIS WON'T BE ALLOWED because it would be a duplicate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM