0

我想确保一个人的出生日期必须小于当前日期。所以我在表格中声明:

    staff_dob SMALLDATETIME NOT NULL CHECK (GETDATE() < staff_dob)

但是当我不断与检查约束发生冲突时。我该如何解决?我是否需要将 GETDATE() 格式化为我使用的正确格式?我不确定该怎么做。

4

2 回答 2

1

试试这个代码:

drop table test

create table test
(staff_dob datetime check (staff_dob < getdate()))


--this insert will fail

insert test
(staff_dob)
values
('1/1/2013')

--this insert will succeed

insert test
(staff_dob)
values
('1/1/2011')

我认为您的支票比较方向错误。

于 2012-05-29T03:47:24.587 回答
1

看看创建和修改 CHECK 约束

CREATE TABLE [dbo].[Staff](
        [staffid] [int] NULL,
        [dob] [date] NULL
    ) ON [PRIMARY]

    GO

    ALTER TABLE [dbo].[Staff]  WITH CHECK ADD  CONSTRAINT [CK_Staff] CHECK  (([dob]<getdate()))
    GO

    ALTER TABLE [dbo].[Staff] CHECK CONSTRAINT [CK_Staff]
    GO

希望这可以帮助

于 2012-05-29T04:06:54.910 回答