2017-09-18 1 views
0

J'ai besoin de numéro de référence unique combinant l'année avec le champ d'incrémentation automatique (comme 17001 .. ici 17 est le dernier deux chiffres de 2017 et 001 est le champ d'incrémentation automatique) créer cette combinaison en utilisant des déclencheurs, mais mon problème est quand la nouvelle année commence incrémentation automatique devrait commencer de 001 à nouveau (comme 18001 quand 2018 commence) ..réinitialiser l'incrément automatique à zéro dans le déclencheur mysql lorsque l'année en cours a changé

Merci à l'avance

mon nom de la table est Chalan et une table de déclenchement NAMEM est chalan_seq

mon code est:

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

Est-ce que votre version de MySQL l'accepte réellement? – Uueerdo

+1

Vous en avez vraiment besoin? il y a très peu d'avantages sur la séquence de redémarrage à 0 chaque année, –

Répondre