使用SQuirreL SQL Client创建SQL Server触发器的问题

时间:2009-05-28 03:51:51

标签: sql-server tsql triggers squirrel-sql

最近我一直在使用SQL Server数据库,我试图使用SQuirreL SQL Client为某些表创建一些触发器,由于某种原因,我无法摆脱以下讨厌的错误消息:

“错误:'CREATE TRIGGER'必须是查询批处理中的第一个语句。 SQLState:S0001 ErrorCode:111“

我试图执行的查询如下(我从一个非常简单的触发器开始,以确保语法正确):

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

当我尝试在Microsoft SQL Server Management Studio Express中执行完全相同的查询时,它执行得很好。我的问题是:是否有其他人使用SQuirreL SQL Client遇到类似的问题,如果是这样,你做了什么来摆脱这个错误?

编辑:

我正在使用SQuirrel SQL v2.6.8和Microsoft SQL Server JDBC Driver 2.0,我正在连接到SQL Server 2005.

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。经过一些谷歌搜索,我发现了这篇文章:

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

简而言之,在您的create trigger语句周围包装exec('')。此外,触发器语句中的任何单引号(')都需要更改双引号('')。

答案 1 :(得分:0)

通常在尝试在同一批次中运行多个语句时会出现该错误,这些语句不允许是批处理中的第一个语句。您可能需要GOGO不是SQL命令,而是客户端工具really a directive以分隔批量命令。

答案 2 :(得分:0)

我无法使用针对SQL 2005 SP3(开发人员版)的jTDS jbdc driver的v1.2.2在SQuirrel SQL v2.6.8上复制此内容。