将默认值添加到基于If Then Else 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 else ReasonCode

如何添加此默认约束?

您可以通过CHECK约束、来实现

首先你必须创建一个表,

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

然后将约束添加为

创建表myTemp1(TempId int不为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

但是检查约束只会检查您的条目,而不会设置默认值。这和我的问题完全一样。然而,我研究了计算列会起作用。

最新更新