SQL - 设置表

时间:2016-03-30 22:28:50

标签: sql sql-server column-defaults

使用SQL Server 2012.

我的成员表中有一个使用以下脚本创建的列:

[EnableMemberWebAccess] [bit] NOT NULL DEFAULT ((1))

如果同一个表中的另一列是某个值,我希望此列只有1作为默认值。我们将此列称为MemDesc,我希望当MemDesc ='创始人'时,EnableMemberWebAccess默认为1,当MemDesc!='创始人&#39时默认为0 ;。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

可能无法实现之后可以更改的默认值。您有一个在开头插入的值。然后,您需要在应用程序中保持一致性:

ALTER TABLE *table* ADD COLUMN EnableMemberWebAccess bit NULL

UPDATE *table* SET *table.*EnableMemberWebAccess = CAST(CASE WHEN *table*.MemDesc = 'Founder' THEN 1 ELSE 0 END AS bit)

ALTER TABLE *table* ALTER COLUMN EnableMemberAccess bit NOT NULL

或者您必须使用计算列。这不允许您更改列的值,除非您更改它所依赖的列的值。

答案 1 :(得分:-1)

计算栏应该适合你:
ADD EnableMemberWebAccess AS cast((CASE WHEN MemDesc='Founder' THEN 1 ELSE 0 END) as bit)