创建sql外键约束

创建sql外键约束,sql,tsql,Sql,Tsql,我希望创建一个如下状态的约束 Code.CodeTable ( CodeID smallint, CategoryID smallint,....) --> Parent Table Admin.Document( DocumentTypeID smallint,.....) --> Child Table FK将是Admin.Document.DocumentTypeID映射,带有Code.CodeTable.CodeID 我希望约束只检查code.CodeTable.Cod

我希望创建一个如下状态的约束

Code.CodeTable ( CodeID smallint, CategoryID smallint,....)  --> Parent Table
Admin.Document( DocumentTypeID smallint,.....)  --> Child Table
FK将是Admin.Document.DocumentTypeID映射,带有Code.CodeTable.CodeID


我希望约束只检查
code.CodeTable.CodeID
,而
code.CodeTable.CategoryID=15

正如OMG Ponies已经说过的那样-您不能跨数据库创建fk约束,但如果这些只是带有点的奇数表名(非常不鼓励!因为SQL Server已经使用点模式:(数据库)。(模式)。(对象名称)因此在表名称中有点只是在某个点上自找麻烦……),那么您应该能够创建如下约束:

ALTER TABLE [Admin.Document]
  ADD CONSTRAINT FK_AdminDocument_CodeTableCodeID
  FOREIGN KEY(DocumentTypeID) REFERENCES [Code.CodeTable](CodeID)
由于表名中有点,因此需要将这些名称括在方括号[]中


基本上,您需要修改子表,并告诉SQL Server该子表中的哪一列引用了父表中的哪一个父表和列。

正如OMG Ponies已经说过的那样-您无法跨数据库创建fk约束,但如果这些只是带有点的奇数表名的话(非常不鼓励!因为SQL Server已经使用点模式:(数据库)。(模式)。(对象名称)因此在表名称中有点只是在某个点上自找麻烦……),那么您应该能够创建如下约束:

ALTER TABLE [Admin.Document]
  ADD CONSTRAINT FK_AdminDocument_CodeTableCodeID
  FOREIGN KEY(DocumentTypeID) REFERENCES [Code.CodeTable](CodeID)
由于表名中有点,因此需要将这些名称括在方括号[]中


基本上,您需要修改子表,并告诉SQL Server该子表中的哪一列引用了父表中的哪一个父表和哪一列。

您不能跨数据库设置外键约束,或者这是您的命名约定--在表名中添加句点?如果这是您的表命名约定,我不建议您这样做nd它。@OMGPonies:OP引用的是带句点的架构,而不是另一个数据库。您不能跨数据库设置外键约束,或者这是您的命名约定--在表名中放置句点?如果这是您的表命名约定,我不推荐使用它。@OMGPonies:OP引用的是带句点的架构,而不是其他数据库另一个数据库。