Acabei de descobrir que a palavra-chave DML ROWGUIDCOL
está obsoleta, a substituição é $rowguid
; e essa palavra-chave DML IDENTITYCOL
está obsoleta, o novo nome é $identity
.
Não entendo por que um DML não variável (sem símbolo de cifrão) pode ser substituído pelo que é essencialmente um alias, que, se eu o entendo, às vezes será avaliado de volta ROWGUIDCOL
e às vezes para outra coisa? Alguém pode explicar o que está acontecendo aqui? O que significa essa depreciação?
Na amostra AdventureWorks, por exemplo, não acho que isso signifique que devo fazer isso:
CREATE TABLE [Sales].[Customer]
(
[CustomerID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
...
[rowguid] [uniqueidentifier] $rowguid NOT NULL,
...
);
GO
O acima não funciona, obviamente. Então, o que está dizendo é obsoleto? Claramente não é a palavra-chave ROWGUIDCOL
acima?
Eu pensei que quando algo está obsoleto, uma nova sintaxe já deve existir e isso me daria tempo para fazer a transição para um formulário que não será interrompido no "SQL 2017+".
Origem:
Recursos obsoletos do mecanismo de banco de dados no SQL Server 2016
Acho que você está interpretando mal o aviso de descontinuação. Especificamente, você parece estar confundindo DML (Data Modification Language) com DDL (Data Definition Language). O que está sendo obsoleto é a capacidade de usar
ROWGUIDCOL
inINSERT
// instruçõesUPDATE
:DELETE
MERGE
Se você executar o procedimento acima, apenas uma linha será atualizada. Este exemplo mostra que,
ROWGUIDCOL
quando usado em uma instrução DML (não em uma instrução DDL), é substituído dinamicamente pela coluna real marcada comoROWGUIDCOL
. E é por isso, de fato, que você é capaz (ou obrigado?) de marcar uma coluna comoROWGUIDCOL
em uma instrução DDL: para que você (e outros processos) possam encontrá-la mais tarde :-).O documento que você apontou é bastante claro sobre o que está obsoleto:
A recomendação é usar
$rowguid
.Assim por exemplo:
está obsoleto. Use isso em vez disso:
A chave é "DML" na definição do que está sendo obsoleto. Isso não afeta as operações DDL, como
CREATE TABLE
.