在datetime列上添加约束

时间:2015-03-17 10:50:56

标签: sql-server date datetime

我想在ID列和日期时间列上添加约束,以便只能在一天内输入一次id

alter table Table1  
...
add constraint pk_id Primary Key (datetime,ID)

如果已为以下id插入datetime 2015-03-17 12:48:00,则不会再次插入同一日期时间,但如果时间更改为2015-03-17 12:45:00 id再次进入。

有没有办法将约束添加到日期时间列的日期部分?

2 个答案:

答案 0 :(得分:3)

我认为你不能,但你有不同的选择:

  • 将列更改为仅填充日期部分
  • 创建一个计算列,您可以在其中删除时间部分,并创建使用此列的唯一索引。

编辑:根据@ a-ツ评论还有其他选择:

  • 将列拆分为两个,一个用于存储日期,另一个用于存储时间部分,因此您可以在日期创建de index

答案 1 :(得分:-1)

您必须提供复合主键或检查约束..

检查此示例。对于复合键,在设计模式下,只需选择列和右键单击并选择" primary-key"。

CREATE TABLE [dbo].[Table_1](
    [id] [int] NOT NULL,
    [datecolumn] [datetime] NOT NULL,
    [name] [varchar](50) NULL,
 CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
    [id] ASC,
    [datecolumn] ASC
)

) ON [PRIMARY]

GO

insert into Table_1 values (1, '2014-03-17 00:00:00.000', 'othercolumnvalue')

insert into Table_1 values  (1, '2014-03-17 12:00:00.000', 'othercolumnvalue')
insert into Table_1 values  (1, '2014-03-17 02:10:59.000', 'othercolumnvalue')

--this will give error as you already entered the same value.
insert into Table_1 values (1, '2014-03-17 00:00:00.000', 'othercolumnvalue')  

how do I make a composite key with SQL Server Management Studio?