Maison  >  Questions et réponses  >  le corps du texte

À propos de la conception d'une fonction qui incrémente un champ dans MySQL.

J'ai une table simple avec trois champs, tag_id, user_id, user_tag_id. Je veux que lorsque j'insère un enregistrement (en insérant un tag_id et un user_id connus), user_tag_id doit être défini automatiquement à la condition que user_id = l'user_id actuellement inséré ajouté 1. , comment implémenter cela ? Dois-je écrire une fonction personnalisée de MySQL ?

世界只因有你世界只因有你2670 Il y a quelques jours942

répondre à tous(2)je répondrai

  • 某草草

    某草草2017-06-28 09:25:38

    DELIMITER $$
    DROP TRIGGER IF EXISTS after_insert_table $$
    CREATE TRIGGER after_insert_table
    AFTER INSERT on table
    FOR EACH ROW
    BEGIN
      update table t set t.user_tag_id = t.user_tag_id+1 where t.user_id=new.user_id ;
    END $$
    DELIMITER ;

    répondre
    0
  • 欧阳克

    欧阳克2017-06-28 09:25:38

    Si seul le user_tag_id dans l'enregistrement nouvellement inséré est augmenté de 1, il peut être divisé en deux instructions SQL :

    Calculez d'abord la valeur maximale de user_id correspondant à user_tag_id

    select max(user_tag_id) + 1 from t1 where user_id = :user_id

    Ensuite, placez la valeur de retour de l'instruction précédente dans l'instruction insert.

    répondre
    0
  • Annulerrépondre