0

SDA0001、SDA0002 などのユーザー コードを自動的に生成するために、このトリガーを作成しました... BEGIN と END の間にメイン ステートメントを含めました。テーブルagent_mstでの挿入前に作成されます

DECLARE max_id INT;

SET max_id=(SELECT MAX(agent_id_pk)+1 FROM `agent_mst`);
IF (max_id IS NULL) THEN
    SET max_id=1;
END IF;

SET 
NEW.date_added=NOW(), 
NEW.date_updated=NOW(),
NEW.agent_code = CONCAT('SDA', LPAD(max_id, 4,'0'));

それが与えているエラーは以下の通りです

MySQL は次のように述べています: #1064 - SQL 構文にエラーがあります。Near 'DECLARE max_id INT; を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。SET max_id=(SELECT MAX(agent_id_pk)+1 FROM agent_mst); ' 1 行目

phpMyAdmin を使用してこのトリガーを作成しています。

ここで何が間違っているのでしょうか?前もって感謝します。

4

2 に答える 2

1

これはうまくいくはずです:

DELIMITER $$

CREATE TRIGGER trigger_name BEFORE INSERT ON `agent_mst`
FOR EACH ROW 
BEGIN
    DECLARE max_id INT;

    SET max_id=(SELECT MAX(agent_id_pk)+1 FROM `agent_mst`);
    IF (max_id IS NULL) THEN
        SET max_id=1;
    END IF;

    SET NEW.date_added=NOW(),
        NEW.date_updated=NOW(),
        NEW.agent_code = CONCAT('SDA', LPAD(max_id, 4,'0'));

END $$

DELIMITER ;
于 2012-12-02T04:26:47.203 に答える
0

すべての pl/sql 関数の MySQL では、最初に区切り文字を設定する必要があります。すべてのセミコロンを行末として使用するためです。

于 2012-12-02T05:17:38.540 に答える