最近我一直在使用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.
答案 0 :(得分:2)
我遇到了同样的问题。经过一些谷歌搜索,我发现了这篇文章:
http://vsingleton.blogspot.com/2009/04/error-create-view-must-be-first.html
简而言之,在您的create trigger语句周围包装exec('')。此外,触发器语句中的任何单引号(')都需要更改双引号('')。
答案 1 :(得分:0)
通常在尝试在同一批次中运行多个语句时会出现该错误,这些语句不允许是批处理中的第一个语句。您可能需要GO
。 GO
不是SQL命令,而是客户端工具really a directive以分隔批量命令。
答案 2 :(得分:0)
我无法使用针对SQL 2005 SP3(开发人员版)的jTDS jbdc driver的v1.2.2在SQuirrel SQL v2.6.8上复制此内容。