-1

我有一个从 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);
4

3 回答 3

8

use是一个保留关键字(提示就在错误消息中!),允许您更改数据库上下文(例如USE master;)。您不应使用保留字作为标识符(表名、列名、数据库名、用户等)。

您需要修复列名(我建议使用更具描述性和自我记录的名称)或用方括号括起来(告诉 SQL Server 忽略它是关键字)。另外,请始终在对象上使用架构前缀

INSERT dbo.foo(id, [use], ...) SELECT 1, 'fun', ...;
于 2013-10-01T19:26:20.787 回答
5

我想你必须把名字放进去[use]

insert into foo (id, [use], some_other_attrs) values(1, fun, other_stuff);

附带说明:-不喜欢使用Reserve 关键字作为列名

于 2013-10-01T19:21:41.370 回答
2

用它包裹起来[]

insert into foo (id, [use], some_other_attrs) values(1, fun, other_stuff);

远离列名的保留字

http://technet.microsoft.com/en-us/library/ms189822.aspx

于 2013-10-01T19:21:50.507 回答