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を初めて使用していますが、何が問題なのかわかりません...

これはエラーです: ON Hotele AFTER UPDATE AS BEGIN DECLARE @stara smallint, @nowa smallint ' at line 2" this is error

4

1 に答える 1

1

THEN少なくとも 1 つの問題は、条件の後にを含めないことですIF。例えば:

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

構文を理解していれば、自分でデバッグできます。この種の単純な問題は、コミュニティの支援を必要としないはずです (場合によっては、余分な目で明らかなエラーを見つけることができます)。

于 2013-03-01T14:21:13.990 に答える