0

現在、で 1064 エラーが発生していelseifます。5.1 でトリガーを作成するのはこれが初めてです。以前使用していたバージョンはわかりませんが、そのバージョンを使用して成功しました。

DROP TRIGGER IF EXISTS greentrucks.iCustomer;
DELIMITER GO
CREATE TRIGGER greentrucks.iCustomer AFTER INSERT
ON customer 
For each ROW BEGIN 

DECLARE count int;
SET @count = FOUND_ROWS();
If @count = 0
THEN LEAVE

ELSEIF EXISTS ( SELECT *
            FROM INSERTED i
            WHERE  EXISTS (
            SELECT p.email
            FROM greentrucks.customer p
            WHERE i.email = p.email))

THEN BEGIN
    RAISERROR('That Email is already in use!',16,1);
    IF @@Trancount >0
        ROlLBACK TRANSACTION;
END IF
END IF
END
GO
DELIMITER ;
4

1 に答える 1

0

LEAVEラベルが必要です。LEAVE のドキュメントLOOP のドキュメントのサンプルを参照してください。LEAVEまた、ステートメントをセミコロンで終了する必要があります。

LEAVEMySQL には、トリガー内の公式の例がないようです。このブログ投稿では、ラベルをBEGIN. それに基づいて、次のようなことを試してください。

DROP TRIGGER IF EXISTS greentrucks.iCustomer;
DELIMITER GO
CREATE TRIGGER greentrucks.iCustomer AFTER INSERT
ON customer 
For each ROW
my_label: BEGIN

DECLARE count int;
SET @count = FOUND_ROWS();
If @count = 0
THEN LEAVE my_label;

... and the rest of your code
于 2013-04-11T04:04:13.233 に答える