语法翻译

问题描述:

这是我的代码:语法翻译

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" 行,这是错误

+1

当您尝试执行此操作时,最好的线索可能是MySQL给您的错误消息。 – 2013-03-01 13:53:49

+0

首先,'MySQL'不支持'COL_LENGTH'功能。 – 2013-03-01 13:55:51

+0

我们预计只是猜测用外语写的触发器有什么问题,我们甚至不知道应该怎么做? – 2013-03-01 13:56:26

至少有一个问题是,你不包括你的IF条件后THEN例如:

IF (@stara<@nowa) THEN 
BEGIN 
    -- ... 
END 

另一个问题是,你有CREATE TRIGGER元素错误的顺序应该是:

CREATE TRIGGER Zmiana_kategorii 
AFTER UPDATE 
ON Hotele 

请注意,AFTER UPDATEON之前。这似乎解决了您的具体问题。

最后,MySQL没有PRINT命令,并且所有变量都必须在BEGIN块的开头声明,在任何其他语句之前。

请阅读此整个页面,了解正在发生的事情:http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

如果你理解了语法,那么你可以自己调试。这些类型的简单问题不应该需要社区的帮助(尽管有时候额外的一双眼睛会发现明显的错误)。