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

标签 sql-server sql-server-2008

是否可以更改现有列以接受基于另一个列值的默认值?

例如:

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

ReasonCode 的默认值基于转码。当 TransCode 为 1 并且 ReasonCode 为 Null 时,则为 99,否则 ReasonCode

如何添加此默认约束?

最佳答案

您可以通过 CHECK 约束来完成,

首先您必须创建表,

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

然后添加约束为

创建表 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

关于sql-server - 基于 If then Else sql server 2008 将默认值添加到现有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20233840/

相关文章:

mysql - 根据另一个表中的值对 sql 组求和

c# - 使用最少的代码从 SQL 数据库行填充文本框

sql-server - 使用波斯语全文搜索

sql-server - 安装后如何添加sql server Analysis Services 2008 R2的管理员用户?

SQL 父子树按深度和显示顺序排序

sql-server - 搜索*没有*给定子元素的元素(其中子元素是可变的)

Sql Server 指定另一个时区的时间

java - Java 中的换行转义序列未以正确的方式取消转义

Sql Query 帮助从两个表中获取不匹配的记录

sql-server - 将字段设置为来自另一个表的随机值