Неправильная синтаксическая ошибка при попытке вставить в SQL Server, используя несколько значений - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь вставить в таблицу, которую я создал, используя несколько значений.Выдает ошибку при неверном синтаксисе рядом с комой в конце строки первых значений.

Я не смог определить проблему.Я пытался вставить отдельно, он вставлен как шарм.Теперь я подозреваю, что многострочная вставка имеет некоторые проблемы из-за объявленной переменной или GETDATE, или обоих?Это не в состоянии провести в сессии?Я пытался положить в транзакции, как начать транса и совершить транс, до сих пор не повезло.У меня огромные строки, какие-либо предложения, пожалуйста?

DECLARE @USER VARCHAR(40)
SET @USER = SYSTEM_USER

INSERT INTO MyTable (Id, Name, User, Date)
VALUES (1, 'Cris', @USER, GETDATE()),
       (2, 'Joel', @USER, GETDATE()),
       (3, 'Kris', @USER, GETDATE());

Я получаю эту ошибку:

Сообщение 102, Уровень 15, Состояние 1, Строка 18
Неправильный синтаксис рядом с ', '.

Однако при вставке по отдельности с использованием оператора объявления в отдельной вставке ошибок не возникает.

1 Ответ

0 голосов
/ 03 января 2019

Проблема не в данных, а в именах столбцов и выражении SQL.

В SQL Server существуют определенные зарезервированные работы системы, которые мы называем Ключевые слова . Обычно мы не поддерживаем использование этих ключевых слов в качестве имен столбцов, так как это может повлиять на производительность запроса. Имена столбцов

Имя, пользователь и дата

являются ключевыми словами или типами данных в SQL Server, поэтому при компиляции операторов это может привести к путанице с компилятором. Таким образом, вы можете решить эту проблему с помощью любого из двух следующих подходов:

Подход № 1

Изменить имена столбцов, которые имеют то же имя, что и ключевые слова. Вы можете легко определить этот столбец, введя Имя COlumn в SQL Server Management Studio, и если цвет текста изменится на Синий, Розовый или Серый (настройки цвета по умолчанию в SSMS), это некоторые системные ключевые слова

  • Синий: типы данных
  • Розовый: системные функции
  • Серый: Ключевые слова

Обратите внимание: Поскольку изменение имени столбца также вызовет проблемы с другими приложениями, и вам придется изменить его во всех этих областях, этот подход менее предпочтителен, если у вас уже есть стабильная система. Но если вы находитесь на начальной стадии развития, это будет лучшим способом решения будущих проблем.

Подход № 2

Это самая простая идея, во всех местах, где вы используете любое из системных зарезервированных ключевых слов, перечисленных выше, поместите их в квадратные скобки, и эта проблема будет решена. Это самый быстрый способ исправить вашу проблему

Ваш обновленный код должен выглядеть следующим образом:

DECLARE @USER VARCHAR(40)
SET @USER = SYSTEM_USER

INSERT INTO MyTable (Id, [Name], [User], [Date])
VALUES (1, 'Cris', @USER, GETDATE()),
       (2, 'Joel', @USER, GETDATE()),
       (3, 'Kris', @USER, GETDATE());
...