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 ;
あなたのバージョンのMySQLは実際にそれを受け入れていますか? – Uueerdo
本当にそれが必要ですか?毎年0に再始動するシーケンスには非常に小さな利点がありますが、 –