在SQL Server 2008中设置有条件的必填字段

时间:2012-08-10 00:24:16

标签: sql-server-2008 ddl dml

我需要为字段制定条件要求。我不确定这在SQL中看起来如何。我正在使用带有SQL Server 2008的Management Studio。基本上我希望只有当另一个字段输入数据时才需要字段。我研究了触发器,我认为这就是我需要的,但我不确定是什么类型(DDLDML等。

例如:

当用户输入时间时,他们还必须输入日期,但如果没有输入时间则不需要日期。 SQL将发送错误,并且不允许用户在填写时间字段时不输入日期来完成记录。

谢谢!

1 个答案:

答案 0 :(得分:4)

您可以使用检查约束。

create table YourTable
(
  ID int identity primary key,
  DateCol date,
  TimeCol time,
  constraint ch_DateTime check(
                              DateCol is not null or 
                              TimeCol is null
                              )
)

用此测试:

-- null in both columns
insert into YourTable default values

-- values in both columns
insert into YourTable(DateCol, TimeCol) values(getdate(), getdate())

-- value only in DateCol
insert into YourTable(DateCol) values(getdate())

-- value only in TimeCol failes
insert into YourTable(TimeCol) values(GetDate())