我有一个像
CREATE TABLE Mytable (ID int identity, Name nvarchar(10));
GO
INSERT INTO MyTable (Name) VALUES ('test1');
INSERT INTO MyTable (Name) VALUES ('test2');
GO
ALTER TABLE MyTable ADD CONSTRAINT DF_Name DEFAULT('test') FOR Name;
现在我想像这样更新我的名称列:
Update MyTable
set name = case ID when 1 then DEFAULT END;
但我收到此错误:
关键字“DEFAULT”附近的语法不正确
如何在子句中使用UPDATE
with语句?DEFAULT
CASE
你不能。
更新语法的相关位是
您只能使用
default
关键字代替表达式,而不能在表达式内使用。因此,您要么只需要直接使用默认值(可以从系统视图中查找为动态的),要么将其溢出到两个带有适当互斥where
子句的更新语句中 - 一个使用default
,第二个使用表达式 - 如果你真的想使用那个关键字。