Проблемы при создании триггеров SQL Server с использованием SQuirreL SQL Client - PullRequest
0 голосов
/ 28 мая 2009

Недавно я работал с базой данных SQL Server и пытался создать некоторые триггеры для некоторых таблиц с помощью SQuirreL SQL Client, и по какой-то причине мне не удалось избавиться от следующего неприятного сообщения об ошибке:

"Ошибка: 'CREATE TRIGGER' должен быть первым оператором в пакете запроса. SQLState: S0001 Код ошибки: 111 "

Запрос, который я пытался выполнить, был следующий (я начал с очень простого триггера, чтобы убедиться в правильности синтаксиса):

CREATE TRIGGER meeting_overlap on adhoc_meeting
FOR INSERT
AS
DECLARE
    @myvar INT

Когда я пытался выполнить мой точно такой же запрос в Microsoft SQL Server Management Studio Express, он выполнялся нормально. Мой вопрос: кто-нибудь еще сталкивался с подобными проблемами, используя SQuirreL SQL Client, и если да, что вы сделали, чтобы избавиться от этой ошибки?

EDIT:

Я использую SQuirrel SQL v2.6.8 с драйвером JDBC 2.0 для Microsoft SQL Server и подключаюсь к SQL Server 2005.

Ответы [ 3 ]

2 голосов
/ 04 июня 2009

У меня была такая же проблема. После некоторого поиска в Google я нашел эту статью:

http://vsingleton.blogspot.com/2009/04/error-create-view-must-be-first.html

Вкратце, оберните exec ('') вокруг оператора создания триггера. Кроме того, любые одинарные кавычки ('), содержащиеся в операторе триггера, необходимо заменить двойными одинарными кавычками (' ').

0 голосов
/ 28 мая 2009

Я не смог воспроизвести это на SQuirrel SQL v2.6.8 с использованием v1.2.2 jTDS драйвера jbdc против SQL 2005 SP3 (для разработчиков).

0 голосов
/ 28 мая 2009

Обычно вы получаете эту ошибку при попытке запустить несколько операторов в одном пакете, которые не могут быть чем-то, кроме первого оператора в пакете. Вам может понадобиться GO между ними. GO - это не команда SQL, а на самом деле директива для клиентского инструмента для разделения пакетов команд.

...