我正在创建一个简单的触发器,当表格更新或插入时会通过电子邮件发送给我:
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'sportsNewsUpd' AND type = 'TR')
DROP TRIGGER sportsNewsUpd
GO
CREATE TRIGGER sportsNewsUpd
ON sportsNews
FOR Insert, UPDATE
AS
EXEC master.webdb.xp_sendmail
@recipients = 'name@email.com',
@subject = 'Sports News has been altered.'
GO
我收到两个错误: “GO”附近的语法不正确,“CREATE TRIGGER”必须是查询批处理中的第一个语句。“GO”附近的语法不正确。 (两个'GO',两个错误)。
我的资源: http://msdn.microsoft.com/en-us/library/aa258254(v=sql.80).aspx(例子中的B.) http://msdn.microsoft.com/en-us/library/ms189505.aspx
答案 0 :(得分:0)
所以...
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'sportsNewsUpd' AND type = 'TR')
DROP TRIGGER sportsNewsUpd;
GO
答案 1 :(得分:0)
尝试:
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'sportsNewsUpd' AND type = 'TR')
begin
DROP TRIGGER sportsNewsUpd
end
GO
CREATE TRIGGER sportsNewsUpd ON sportsNews FOR Insert, UPDATE AS
begin
EXEC master.webdb.xp_sendmail
@recipients = 'name@email.com',
@subject = 'Sports News has been altered.'
end
GO
答案 2 :(得分:0)
如何运行查询?
我非常怀疑从SSMS查询窗口运行脚本会出现这些错误。此外,如果您使用sqlcmd
或osql
运行错误,则不会收到错误。
我的意思是我怀疑你是在尝试从应用程序运行脚本,所以你可能没有意识到GO
不是T-SQL的一部分。
在这种情况下,解决方案是将脚本分成两部分并依次运行每个部分。