Jon*_*ssi 4 t-sql ddl sql-server-2008-r2
这些陈述中的一个不应该起作用而且一个失败吗?
直觉说语句2应该失败,因为在int之后有一个逗号而没有列出第二列.
然而,在最后一列数据类型之后,工作和尾随逗号","都没有区别.
-- Statement 1
CREATE TABLE dbo.MyTable1( col1 int);
-- Statement 2
CREATE TABLE dbo.MyTable2( col1 int,);
Run Code Online (Sandbox Code Playgroud)
然而(这是预期的):在最后一个字段之后的两个逗号",,"确实导致失败:
-- Statement 3
CREATE TABLE dbo.MyTable3( col1 int,,);
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ','.
Run Code Online (Sandbox Code Playgroud)
测试显示它不仅仅是允许通过的最后一个字段之后的任何字符.例如,这失败了:
-- Statement 3
CREATE TABLE dbo.MyTable3( col1 int ~);
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '~'.
Run Code Online (Sandbox Code Playgroud)
也许SQL Server正在"为桌子保留席位"?主键可能呢?我真的不知道.
我使用的是Microsoft SQL Server 2008 R2(SP1) - 10.50.2500.0(X64).
描述
执行CREATE TABLE命令时,允许在最后一列之后使用尾随逗号.基于BOL中的语法和其他T-SQL语句中的列表中的逗号用法,此行为不一致.这是一个非常小的问题,似乎不会引起任何不良副作用.看来解析器可能有点过时了.
微软认为这是一个错误,但是一个小问题.
这在前一段时间被解决为"不会修复",但我们没有解释原因.简单地说,这看起来非常无害,并且不值得在服务包中修复.我们可能会考虑在将来的版本中修复此问题.
| 归档时间: |
|
| 查看次数: |
1878 次 |
| 最近记录: |