在 SQL 服务器中,我可以在不存在的列上设置外键吗?

In SQL Server, can I set a foreign key on a column that does not exist?

我正在使用 SQL Server 2005,并且我有 3 个 tables:

CREATE TABLE [dbo].[Workflow]
(
    [WorkflowId] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) NOT NULL,
    [Description] [varchar](1000) NULL
)

CREATE TABLE [dbo].[Application]
(
    [ApplicationId] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) NOT NULL
)

CREATE TABLE [dbo].[Rel_Workflow_Application]
(
    [WorkflowId] [int] NOT NULL,
    [ApplicationId] [int] NOT NULL
)

规则是在Rel_Workflow_Application中,ApplicationId必须存在于Application中,table也可以为0。我在[中没有记录=24=] Application 其中 ApplicationId = 0 我不想创建一个。

如何设置此限制条件?

虽然在创建外键时可以使用 NOCHECK,但这种黑客攻击可能会产生问题。我会使用 null 而不是 0,如果 0 需要出现在查询中,请在 select 语句中使用 coalesce(ApplicationID, 0) 或创建执行此操作的视图并改为查询该视图。

这清楚地表明外键在 Application 中没有一行。