2013-03-01 80 views
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 

有人能告訴我什麼是錯的語法?我使用的第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

回答

1

至少有一個問題是,你不包括你的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

如果你理解了語法,那麼你可以自己調試。這些類型的簡單問題不應該需要社區的幫助(儘管有時候額外的一雙眼睛會發現明顯的錯誤)。