使用 SQL Server 2012。
我的成员表中有一个使用以下脚本创建的列:
[EnableMemberWebAccess] [bit] NOT NULL DEFAULT ((1))
如果同一个表中的另一列是某个值,我希望该列只有 1 作为默认值。让我们将此列称为 MemDesc,我希望 EnableMemberWebAccess 在 MemDesc = 'Founder' 时默认为 1,而在 MemDesc != 'Founder' 时默认为 0。
非常感谢任何帮助!
使用 SQL Server 2012。
我的成员表中有一个使用以下脚本创建的列:
[EnableMemberWebAccess] [bit] NOT NULL DEFAULT ((1))
如果同一个表中的另一列是某个值,我希望该列只有 1 作为默认值。让我们将此列称为 MemDesc,我希望 EnableMemberWebAccess 在 MemDesc = 'Founder' 时默认为 1,而在 MemDesc != 'Founder' 时默认为 0。
非常感谢任何帮助!
可能没有办法实现以后可以更改的默认值。要么您有一个在开头插入的值。然后,您需要注意应用程序内的一致性:
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
或者您必须使用计算列。这将不允许您更改列的值,除非您更改它所依赖的列的值。
计算列应该适合您:
ADD EnableMemberWebAccess AS cast((CASE WHEN MemDesc='Founder' THEN 1 ELSE 0 END) as bit)