2017-09-18 4 views
0

年を自動インクリメントフィールド(17001など)と組み合わせる一意の参照番号が必要です。ここで17は2017の最後の2桁で、001は自動インクリメントフィールドです)トリガーを使用して、この組み合わせを作成しますが、私の問題は、新しい年の開始時に自動インクリメントが(18001のようなとき、2018年開始)、再び001から開始する必要があります..です事前現在の年が変更されたときにmysqlトリガーの自動インクリメントを0にリセット

おかげ

私のテーブル名がチャランで、トリガテーブルNAMEMがありますchalan_seq

マイコードは:

DELIMITER $$ 
    CREATE TRIGGER tg_chalan_insert 
    BEFORE INSERT ON chalan 
    FOR EACH ROW 
    BEGIN 
    DECLARE curdate INT; 
    DECLARE lastdate INT; 
    SET curdate = DATE_FORMAT(CURDATE(), '%y'); 
    SET lastdate = (SELECT SUBSTR(ref,5,2) from chalan order by ref DESC LIMIT 1 
    ); 
    END 
    if(curdate != lastdate) 
    BEGIN 
    DELETE FROM chalan_seq; 
    ALTER TABLE chalan_seq AUTO_INCREMENT = 0; 
    END$$ 
    ELSE 
    BEGIN 
    INSERT INTO chalan_seq VALUES (NULL); 
    SET NEW.ref = CONCAT('GEMS',DATE_FORMAT(CURDATE(), '%y'), 
    LPAD(LAST_INSERT_ID(), 3, '0')); 
    END$$ 
    DELIMITER ; 
+0

あなたのバージョンのMySQLは実際にそれを受け入れていますか? – Uueerdo

+1

本当にそれが必要ですか?毎年0に再始動するシーケンスには非常に小さな利点がありますが、 –

答えて

関連する問題