【发布时间】:2012-02-08 08:14:24
【问题描述】:
我有下表
CREATE TABLE [dbo].[LogFiles_Warehouse](
[id] [int] IDENTITY(1,1) NOT NULL,
[timestamp] [datetime] NOT NULL,
[clientNr] [int] NOT NULL,
[server] [nvarchar](150) COLLATE Latin1_General_CI_AS NOT NULL,
[storeNr] [int] NOT NULL,
[account] [nvarchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[software] [nvarchar](300) COLLATE Latin1_General_CI_AS NOT NULL,
CONSTRAINT [PK_Astoria_LogFiles_Warehouse] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
并且希望避免在我的表中出现重复的行。我想过在整个表上创建一个唯一索引,但是 SQL Manager Studio 告诉我这是不可能的,因为键太大了。
除了索引之外,还有其他方法可以对所有列强制执行唯一行吗?
【问题讨论】:
-
您想要基于哪些列的唯一行?
-
肯定有一个身份意味着不会有唯一的行,你说的是其余列的唯一性
-
你能告诉我们这样的约束有什么好处吗?对于时间戳和 clientNr 等字段,我怀疑您甚至可以得到重复的行。
-
数据是用户可以导入的日志文件。但是当两个用户导入相同的日志文件时,我想避免数据被插入两次。
标签: sql-server tsql indexing unique