Eu tenho uma única tabela como
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;
Agora quero atualizar minha coluna Nome assim:
Update MyTable
set name = case ID when 1 then DEFAULT END;
Mas estou recebendo este erro:
Sintaxe incorreta perto da palavra-chave 'DEFAULT'
Como posso usar UPDATE
with DEFAULT
na CASE
cláusula?
Você não pode.
A parte relevante da gramática para atualização é
Você só pode usar a palavra-
default
chave no lugar de uma expressão, não dentro de uma expressão. Portanto, você precisaria apenas usar o valor do padrão diretamente (pode ser pesquisado nas exibições do sistemawhere
para ser dinâmico) ou dividi-lo em duas instruções de atualização com cláusulas mutuamente exclusivas apropriadas - uma usandodefault
e a segunda usando uma expressão - se você realmente deseja usar essa palavra-chave.