4

使用 SQL Server 2012。

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

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

如果同一个表中的另一列是某个值,我希望该列只有 1 作为默认值。让我们将此列称为 MemDesc,我希望 EnableMemberWebAccess 在 MemDesc = 'Founder' 时默认为 1,而在 MemDesc != 'Founder' 时默认为 0。

非常感谢任何帮助!

4

2 回答 2

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

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

于 2016-03-30T22:55:58.427 回答
-1

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

于 2016-03-30T23:09:44.843 回答