2013-10-01 3 views
-1

У меня есть DB, с которой я перешел из MySQL в SQLServer. Одно из имен столбцов таблицы - use. Как я могу написать свою инструкцию insert, чтобы не вызывать ошибку из-за этого? Я получаю сообщение об ошибке:Как использовать имя столбца 'use' в sqlserver

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); 
+3

Интересно, как 'use' мог считать имя столбца _useful_. Возможно, переосмыслите это. –

+2

@GrantThomas Если вы думаете о представлении существительного 'use' вместо глагола, оно не кажется таким бесполезным. – Khan

+2

@Khan Я не вижу, как он объясняет что-либо, даже в контексте с родительским именем (очевидно - надеюсь, не 'foo'), чтобы считаться разумным. –

ответ

5

Я думаю, вы должны поставить имя в [use]

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

На стороне записки: - Не рекомендуется использовать Reserve keyword в качестве имен столбцов

8

use является reserved keyword (подсказка тут же в сообщении об ошибке!), Что позволяет изменять контекст базы данных (например, USE master;). Вы не должны использовать зарезервированные слова в качестве идентификаторов (имена таблиц, имена столбцов, имена баз данных, пользователей и т. Д.).

Вам нужно либо исправить имя столбца (я предлагаю нечто более описательное и самодокументирующее), либо окружить его квадратными скобками (что говорит SQL Server игнорировать, что это ключевое слово). Кроме того, please always use the schema prefix on objects:

INSERT dbo.foo(id, [use], ...) SELECT 1, 'fun', ...; 
+0

+1 для ответа дважды – Khan

Смежные вопросы