代码之家  ›  专栏  ›  技术社区  ›  Ben

如何创建此SQL约束

  •  3
  • Ben  · 技术社区  · 14 年前

    我所处的情况是,我有一组现有的表,它们的ID是递增的整数。我现在为每个表添加了一个GUID作为新的PK。

    我有一张主桌

    dbo.ParentTable(GUID - PK, ParentTableId INT, Name VARHCHAR) 
    

    dbo.ChildTable(GUID - PK, ParentTableId INT, other fields.....) 
    

    我意识到我不能在两者之间创建一个FK关系,因为他们现在有PK的guid。 我应该更新子表中的guid以便它们链接回父表,还是仍然可以基于预先存在的ParentId列创建关系?

    两者之间的关系是一对多(父对子),我使用的是SQLServer2008。

    3 回复  |  直到 14 年前
        1
  •  1
  •   onedaywhen    14 年前

    我想你可能错误地认为你只能创造一个 FOREIGN KEY 指的是 PRIMARY KEY 外键 UNIQUE 约束,例如。

    ALTER TABLE ParentTable ADD 
       UNIQUE (ParentTableId);
    
    ALTER TABLE ChildTable ADD 
       FOREIGN KEY (ParentTableId)
       REFERENCES ParentTable (ParentTableId);
    
        2
  •  0
  •   ramad    14 年前

    我不认为您希望更新子表中的guid以链接到父表,因为这可能会破坏子表中的PK。我要做的是将子表中的“ParentTableId”列改为GUID而不是INT。然后用ParentTable.GUID<之间的关系更新子表-&燃气轮机;ChildTable.ParentTableID。

        3
  •  0
  •   Amy B    14 年前

    想要在两者之间建立一种关系(主要是为了使.Net中的LINQ到SQL能够建立这种关系)

    add an association 即使FKey尚未定义。