0

最近我一直在使用 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 时遇到过类似的问题,如果是这样,你做了什么来摆脱这个错误?

编辑:

我将 SQuirrel SQL v2.6.8 与 Microsoft SQL Server JDBC Driver 2.0 一起使用,并且正在连接到 SQL Server 2005。

4

3 回答 3

2

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

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

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

于 2009-06-04T17:26:14.493 回答
0

通常,当您尝试在同一个批处理中运行多个语句时,您会遇到该错误,这些语句除了批处理中的第一个语句之外不允许是任何内容。您可能需要GO介于两者之间。 GO不是 SQL 命令,而是真正的对客户端工具的指令,用于分隔成批的命令。

于 2009-05-28T03:59:35.577 回答
0

我无法使用jTDS jbdc 驱动程序的 v1.2.2对 SQL 2005 SP3(开发人员版)在 SQuirrel SQL v2.6.8 上复制它。

于 2009-05-28T11:29:13.907 回答