基于If Then Else sql server 2008将默认值添加到现有列

时间:2013-11-27 04:20:46

标签: sql-server sql-server-2008

是否可以根据其他列值更改现有列以接受默认值?

例如:

Create table #Temp
(
    TempId int not null
   ,TransCode int    --values of 1 / 2 or 3
   ,ReasonCode int
)

ReasonCode的默认值基于TransCode。当TransCode为1且ReasonCode为Null时,则为99其他ReasonCode

如何添加此默认约束?

2 个答案:

答案 0 :(得分:1)

您可以通过CHECK约束

来完成

首先,你必须创建表,

 create table myTemp1(TempId int not null ,TransCode int,ReasonCode int);

然后将约束添加为

create table myTemp1(TempId int not null,TransCode int,ReasonCode int);

alter table myTemp1
add constraint check_role CHECK(case when (TransCode = 1 AND ReasonCode = NULL)
                                then 99 else ReasonCode end = ReasonCode);

或喜欢

alter table myTemp1
add constraint check_role CHECK(ReasonCode = (case when (TransCode = 1 AND ReasonCode
                                = NULL) then 99 else ReasonCode end = 1))

演示http://sqlfiddle.com/#!3/d633a/1

答案 1 :(得分:1)

但Check Constraint只检查您的输入而不是默认值。 这是我完全相同的问题。但是,我研究过计算列可以解决问题。