SQL-设置表中默认列值的参数

SQL-设置表中默认列值的参数,sql,sql-server,column-defaults,Sql,Sql Server,Column Defaults,使用SQL Server 2012 我的成员表中有一列是使用以下脚本创建的: [EnableMemberWebAccess] [bit] NOT NULL DEFAULT ((1)) 如果同一表中的另一列是某个值,我希望该列的默认值仅为1。让我们将此列命名为MemDesc,我希望当MemDesc='Founder'时,enablemberwebaccess默认为1,当MemDesc!='Founder'时,enablemberwebaccess默认为0创始人' 非常感谢任何帮助 可能无法获得可

使用SQL Server 2012

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

[EnableMemberWebAccess] [bit] NOT NULL DEFAULT ((1))
如果同一表中的另一列是某个值,我希望该列的默认值仅为1。让我们将此列命名为MemDesc,我希望当MemDesc='Founder'时,enablemberwebaccess默认为1,当MemDesc!='Founder'时,enablemberwebaccess默认为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

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

计算列应适用于您:

将EnableMemberWebAccess添加为强制转换((当MemDesc='Founder'然后为1 ELSE 0 END时为1)作为位)

这将是一次更新,而问题涉及到列的默认值。这将如何适应更新后插入的新记录?更新后,除了失败之外,它不会做任何事情。我认为没有办法按照op的要求去做。至少我不知道有什么办法。提供列的一致性应该在应用程序级别上完成,而不是在数据库上。如果该值始终相同,则需要一个计算列。@Amit Sukralia问题的答案不能由计算列完成。计算列将不可修改。默认值为。但是,据我所知,默认值不能依赖于另一列。请尝试我在回答中给出的代码,这应该表明它是有效的。您所说的“计算列不可修改”是什么意思?是的,您是正确的-它不可更新。然而,这甚至是必需的。我假设
enablemberwebaccess
始终依赖于
MemDesc
。因此,每当
MemDesc
的值发生变化时,
enablemberwebaccess
应该相应地变化。如果这不是预期的行为,则计算列方法将不足够。看起来需要编写触发器:,