我刚刚发现 DML 关键字ROWGUIDCOL
已被弃用,替换为$rowguid
; 并且该 DMLIDENTITYCOL
关键字已弃用,新名称为$identity
.
我不明白为什么非变量(没有美元符号)DML 可以替换为本质上是别名的东西,如果我理解它,有时会评估回ROWGUIDCOL
其他东西?谁能解释这里发生了什么?这个弃用是什么意思?
例如,在 AdventureWorks 示例中,我不认为这意味着我应该这样做:
CREATE TABLE [Sales].[Customer]
(
[CustomerID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
...
[rowguid] [uniqueidentifier] $rowguid NOT NULL,
...
);
GO
以上显然不起作用。那么它说的是什么被弃用了?明明不是ROWGUIDCOL
上面的关键词?
我认为当某些东西被弃用时,新语法必须已经存在,这会让我有时间过渡到不会在“SQL 2017+”中中断的形式。
起源:
我认为您误读了弃用通知。具体来说,您似乎将 DML(数据修改语言)与 DDL(数据定义语言)混淆了。被弃用的是
ROWGUIDCOL
在INSERT
/UPDATE
/DELETE
/MERGE
语句中使用的能力:如果运行上面的命令,只会更新一行。此示例表明,
ROWGUIDCOL
当在 DML 语句中使用时(而不是在 DDL 语句中)被标记为 的实际列动态替换ROWGUIDCOL
。事实上,这就是为什么您能够(或要求?)将列标记为ROWGUIDCOL
DDL 语句:以便您(和其他进程)稍后可以找到它:-)。您指向的文档实际上非常清楚不推荐使用的内容:
建议使用
$rowguid
.例如:
已弃用。改用这个:
关键是“DML”在被弃用的定义中。这不会影响 DDL 操作,例如
CREATE TABLE
.