Sql server 2005 唯一约束不存在';我不想约束任何事情

Sql server 2005 唯一约束不存在';我不想约束任何事情,sql-server-2005,Sql Server 2005,我有一个名为“模型”的表格,设置如下: ID-PK,身份 制造商FK-Int32 PriModel FK-Int32 secmodelfk-Int32 FormFactor FK-Int32 活动字符(1) 我希望第2、3、4、5列只接受一组唯一的值。我跑: ALTER TABLE dbo.Models ADD CONSTRAINT uc_Models UNIQUE (Manufacturer, PriModel, SecModel, FormFactor) 命令报告已成功完成,我看到添加了索

我有一个名为“模型”的表格,设置如下:

  • ID-PK,身份
  • 制造商FK-Int32
  • PriModel FK-Int32
  • secmodelfk-Int32
  • FormFactor FK-Int32
  • 活动字符(1)
  • 我希望第2、3、4、5列只接受一组唯一的值。我跑:

    ALTER TABLE dbo.Models ADD CONSTRAINT uc_Models UNIQUE (Manufacturer, PriModel, SecModel, FormFactor)
    
    命令报告已成功完成,我看到添加了索引,但没有添加约束。我还能够使用Insert和Update命令创建cols 2-5的副本。我不确定问题是外键还是其他问题

    USE [inventory_v2]
    GO
    
    
        /****** Object:  Table [dbo].[Models]    Script Date: 4/8/2013 2:01:41 PM ******/
        SET ANSI_NULLS ON
        GO
    
        SET QUOTED_IDENTIFIER ON
        GO
    
        SET ANSI_PADDING ON
        GO
    
        CREATE TABLE [dbo].[Models](
            [ID] [int] IDENTITY(1,1) NOT NULL,
            [Manufacturer] [int] NOT NULL,
            [PriModel] [int] NOT NULL,
            [SecModel] [int] NOT NULL,
            [FormFactor] [int] NOT NULL,
            [Active] [char](1) NOT NULL,
         CONSTRAINT [PK_Models] PRIMARY KEY CLUSTERED 
        (
            [ID] ASC
        )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
         CONSTRAINT [uc_Models] UNIQUE NONCLUSTERED 
        (
            [Manufacturer] ASC,
            [PriModel] ASC,
            [SecModel] ASC,
            [FormFactor] ASC
        )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
        ) ON [PRIMARY]
    
        GO
    
        SET ANSI_PADDING OFF
        GO
    
        ALTER TABLE [dbo].[Models]  WITH CHECK ADD  CONSTRAINT [FK_Models_Models_FormFactor] FOREIGN KEY([FormFactor])
        REFERENCES [dbo].[Models_FormFactor] ([ID])
        GO
    
        ALTER TABLE [dbo].[Models] CHECK CONSTRAINT [FK_Models_Models_FormFactor]
        GO
    
        ALTER TABLE [dbo].[Models]  WITH CHECK ADD  CONSTRAINT [FK_Models_Models_OEMs] FOREIGN KEY([Manufacturer])
        REFERENCES [dbo].[Models_OEMs] ([ID])
        GO
    
        ALTER TABLE [dbo].[Models] CHECK CONSTRAINT [FK_Models_Models_OEMs]
        GO
    
        ALTER TABLE [dbo].[Models]  WITH CHECK ADD  CONSTRAINT [FK_Models_Models_PriModels] FOREIGN KEY([PriModel])
        REFERENCES [dbo].[Models_PriModels] ([ID])
        GO
    
        ALTER TABLE [dbo].[Models] CHECK CONSTRAINT [FK_Models_Models_PriModels]
        GO
    
        ALTER TABLE [dbo].[Models]  WITH CHECK ADD  CONSTRAINT [FK_Models_Models_SecModels] FOREIGN KEY([SecModel])
        REFERENCES [dbo].[Models_SecModels] ([ID])
        GO
    
        ALTER TABLE [dbo].[Models] CHECK CONSTRAINT [FK_Models_Models_SecModels]
        GO
    

    您确定已正确添加约束吗?你是怎么核实的?请尝试
    sp_help Models
    ,确认“约束”部分列出了新约束,并且该约束是唯一的。否。我查看了短信控制台。它在该部分中被列为唯一的(非聚集)。您的重复值是
    null
    ?否,它们将是{2:2:3:1}。因此,即使已经存在,也允许将{2:2:4:1}更新为{2:2:3:1}。奇怪(显然你为什么要在这里发布!)。如果您将通过“脚本表为…”获得的表定义发布,可能会有所帮助