如何创建此SQL约束

时间:2010-07-19 10:30:12

标签: sql sql-server linq-to-sql

我所处的情况是我有一组现有的表,其中Integers递增为Ids。我现在已经为每个表添加了一个GUID作为新的PK。

我有一张主表

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

和子表

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

并且希望基于ParentTableId在两者之间创建关系(主要是因为.Net的LINQ to SQL将建立关系)。 我意识到我不能在两者之间建立FK关系,因为他们现在拥有GUIDS for PK。 我应该更新子表中的GUID以便它们链接回其父表,还是可以基于预先存在的ParentId列创建关系?

两者之间的关系是一对多(父对子),我正在使用SQL Server 2008。

3 个答案:

答案 0 :(得分:1)

我认为您可能错误地认为您只能创建引用FOREIGN KEY的{​​{1}}。实际上,您可以创建引用PRIMARY KEY约束的FOREIGN KEY,例如

UNIQUE

答案 1 :(得分:0)

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

答案 2 :(得分:0)

  

想要在两者之间建立关系(主要是因为.Net的LINQ to SQL会建立关系)

接受的答案很棒。但是,LinqToSql并不关心数据库中的内容。即使未定义FKey,您也可以add an association