是否可以更改现有列以接受基于另一列值的默认值?
例如:
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
但是检查约束只会检查您的条目,而不会设置默认值。这和我的问题完全一样。然而,我研究了计算列会起作用。