语法翻译
问题描述:
这是我的代码:语法翻译
CREATE TRIGGER Zmiana_kategorii
ON Hotele
AFTER UPDATE
AS
BEGIN
DECLARE @stara smallint, @nowa smallint
IF COL_LENGTH('deleted', 'IloscGwiazdek')
BEGIN
SET @stara=(SELECT IloscGwiazdek FROM deleted)
SET @nowa=(SELECT IloscGwiazdek FROM inserted)
IF(@stara<@nowa)
BEGIN
print 'Powiadom następujących klientów o zmianie klasy hotelu'
declare @data date
SET @data=(CONVERT (date, GETDATE()))
SELECT KlientID FROM Rezerwacje Where @data<DataPrzyjazdu
END
END
END
有人能告诉我什么是错的语法?我使用的第1次MYSQL我不知道什么是错这个......
这是错误:酒店预订AFTER UPDATE和BEGIN DECLARE @stara SMALLINT,@nowa SMALLINT“第2" 行,这是错误
答
至少有一个问题是,你不包括你的IF
条件后THEN
例如:
IF (@stara<@nowa) THEN
BEGIN
-- ...
END
另一个问题是,你有CREATE TRIGGER
元素错误的顺序应该是:
CREATE TRIGGER Zmiana_kategorii
AFTER UPDATE
ON Hotele
请注意,AFTER UPDATE
在ON
之前。这似乎解决了您的具体问题。
最后,MySQL没有PRINT
命令,并且所有变量都必须在BEGIN
块的开头声明,在任何其他语句之前。
请阅读此整个页面,了解正在发生的事情:http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
如果你理解了语法,那么你可以自己调试。这些类型的简单问题不应该需要社区的帮助(尽管有时候额外的一双眼睛会发现明显的错误)。
当您尝试执行此操作时,最好的线索可能是MySQL给您的错误消息。 – 2013-03-01 13:53:49
首先,'MySQL'不支持'COL_LENGTH'功能。 – 2013-03-01 13:55:51
我们预计只是猜测用外语写的触发器有什么问题,我们甚至不知道应该怎么做? – 2013-03-01 13:56:26