我有一个从 MySQL 迁移到 SQLServer 的数据库。表的列名之一是use
. 如何编写我的插入语句以不因此而引发错误?我收到错误:
Msg 156, Level 15, State 1, Line 4830
Incorrect syntax near the keyword 'use'.
我的插入看起来像:
insert into foo (id, use, some_other_attrs) values(1, fun, other_stuff);
我有一个从 MySQL 迁移到 SQLServer 的数据库。表的列名之一是use
. 如何编写我的插入语句以不因此而引发错误?我收到错误:
Msg 156, Level 15, State 1, Line 4830
Incorrect syntax near the keyword 'use'.
我的插入看起来像:
insert into foo (id, use, some_other_attrs) values(1, fun, other_stuff);
use
是一个保留关键字(提示就在错误消息中!),允许您更改数据库上下文(例如USE master;
)。您不应使用保留字作为标识符(表名、列名、数据库名、用户等)。
您需要修复列名(我建议使用更具描述性和自我记录的名称)或用方括号括起来(告诉 SQL Server 忽略它是关键字)。另外,请始终在对象上使用架构前缀:
INSERT dbo.foo(id, [use], ...) SELECT 1, 'fun', ...;
我想你必须把名字放进去[use]
insert into foo (id, [use], some_other_attrs) values(1, fun, other_stuff);
附带说明:-不喜欢使用Reserve 关键字作为列名
用它包裹起来[]
insert into foo (id, [use], some_other_attrs) values(1, fun, other_stuff);
远离列名的保留字