0

这是我的代码:

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 我不知道这有什么问题...

这是错误:在 Hotele 更新后开始声明 @stara smallint,@nowa smallint ' 在第 2 行“这是错误

4

1 回答 1

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

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

于 2013-03-01T14:21:13.990 回答