2013-03-01 2 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 

может кто-нибудь сказать мне, что случилось в синтаксисе? Я первый раз, используя MYSQL я понятия не имею, Что не так с этим ...

это ошибка: ON Hotele ПОСЛЕ UPDATE AS BEGIN DECLARE @stara SMALLINT, @nowa SMALLINT 'в строке 2" это ошибка

+1

Лучшая подсказка, вероятно, будет сообщением об ошибке, которое MySQL дает вам, когда вы пытаетесь выполнить это. –

+0

Во-первых, 'MySQL' не поддерживает функцию' COL_LENGTH'. –

+0

Ожидаем ли мы, что мы просто не знаем, что случилось с триггером, написанным на иностранном языке, мы даже не знаем, что должно делать? –

ответ

1

по крайней мере одна проблема заключается в том, что вы не включают THEN после ваших 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

Если вы понимаете синтаксис, то вы можете отлаживать его самостоятельно. Эти простые проблемы не должны требовать помощи сообщества (хотя иногда дополнительные пары глаз могут обнаружить очевидную ошибку).

Смежные вопросы