2012-02-01 9 views
0

私は、MySQLコミュニティサーバ5.5.16に更新トリガーを作成しようとしていますが、私はエラーを持っている:MySQLの更新トリガ誤差

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use near 'REFER 
ENCING NEW TABLE AS ntable 
BEGIN atomic 
     DECLARE n_overdraft INTEGER; 
     DECL' at line 1 

誰もがこの問題で私を助けてもらえます。ありがとう。ちょうどそれは、MySQLサーバの標準ではありませんので、REFERENCING NEW TABLE AS ntableatomicを削除するために必要な

CREATE TABLE overdraft(account_no INTEGER,over_draft INTEGER); 

DELIMETER // 
CREATE TRIGGER t_creditexceed AFTER UPDATE ON Account REFERENCING NEW TABLE AS ntable 
BEGIN atomic 
    DECLARE n_overdraft INTEGER; 
    DECLARE n_balance INTEGER; 
    DECLARE n_number INTEGER; 
    DECLARE n_credit INTEGER; 
    DECLARE credit_exception condition for SQLSTATE '07030'; 

    SELECT balance, credit, number INTO n_balance, n_credit, n_number 
    FROM ntable; 
    IF ((n_balance < (-n_credit)) AND (n_balance >= 1.1 * (-n_credit))) 
    THEN 
    SET n_overdraft = n_balance + n_credit; 
    INSERT INTO overdraft (account_no, over_draft) VALUES (n_number, n_overdraft); 
    END IF; 
    IF (n_balance < 1.1 *(- n_credit)) 
    THEN signal credit_exception; 
    END IF; 
END; 
// 
+1

DELIMETER - > DELIMITER。 NEW TABLEを参照しているものは何ですか? – Devart

+0

これは、移行テーブル "ntable"を使用する "Account"テーブルへの参照です。 – user1047517

+1

MySQLを使用している場合、このマニュアルは役に立ちます - http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html – Devart

答えて