语法翻译

时间:2013-03-01 13:50:24

标签: mysql

这是我的代码:

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

有人能告诉我语法有什么问题吗?我是第一次使用MYSQL我没有任何线索这是错的...

这是错误:ON Hotele在UPDATE as BEGIN DECLARE @stara smallint后,@ nowa smallint'在第2行“这是错误

1 个答案:

答案 0 :(得分:1)

至少有一个问题是您的THEN条件之后未包含IF。例如:

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

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