我可以从表值函数返回外键列吗?

时间:2010-09-29 13:24:24

标签: sql-server-2005 tsql user-defined-functions

我想使用表值函数并从多个存储过程中调用它,而不是在所有存储过程中重复相同的查询,但为了与传统的VB6 / UltraGrid应用程序兼容,我需要保留外键引用。原始表格。

在表值函数中,我可以指定PRIMARY KEY,但有没有办法指定'FOREIGN KEY'?我尝试像这样修改返回表,但是我收到语法错误:

ALTER TABLE @ReturnTable  
WITH CHECK ADD  CONSTRAINT [FK_ReturnTable_OtherTable]
FOREIGN KEY([OtherTableID])
REFERENCES [dbo].[OtherTable] ([OtherTableID])

2 个答案:

答案 0 :(得分:2)

不,你不能。该函数返回一个仅在运行时存在的“虚拟”表,并且无法将FK转换为这样的虚构/瞬态行集。在不知道您的架构以及您想要完成的内容的情况下,我最好猜测尝试使用触发器来强制执行此操作。

答案 1 :(得分:1)

您的旧网格是否会通过视图查看FK关系?或者查询无法存储为视图?