use*_*126 5 sql-server sql-server-2008
是否可以更改现有列以接受基于其他列值的默认值?
对于Eg:
Create table #Temp
(
TempId int not null
,TransCode int --values of 1 / 2 or 3
,ReasonCode int
)
Run Code Online (Sandbox Code Playgroud)
ReasonCode的默认值基于TransCode.当TransCode为1且ReasonCode为Null时,则为99其他ReasonCode
如何添加此默认约束?
小智 2
您可以通过 CHECK 约束来做到这一点,
首先你必须创建表,
create table myTemp1(TempId int not null ,TransCode int,ReasonCode int);
Run Code Online (Sandbox Code Playgroud)
然后将约束添加为
创建表 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);
Run Code Online (Sandbox Code Playgroud)
或者喜欢
alter table myTemp1
add constraint check_role CHECK(ReasonCode = (case when (TransCode = 1 AND ReasonCode
= NULL) then 99 else ReasonCode end = 1))
Run Code Online (Sandbox Code Playgroud)
演示地址:http://sqlfiddle.com/#!3/d633a/1