Maison  >  Article  >  base de données  >  Résumé de l'utilisation de la séquence Sequence dans MySQL

Résumé de l'utilisation de la séquence Sequence dans MySQL

WBOY
WBOYavant
2022-09-13 18:01:453060parcourir

Apprentissage recommandé : Tutoriel vidéo mysql

Si vous souhaitez une valeur de type de données auto-croissante continue dans la base de données Oracle, vous pouvez créer une séquence. Il n'y a aucune séquence dans la base de données MySQL. Habituellement, si une table n'a besoin que d'une seule colonne à incrémentation automatique, nous pouvons alors utiliser l'auto_increment de MySQL (une table ne peut avoir qu'une seule clé primaire à incrémentation automatique). Si nous voulons utiliser des séquences dans MySQL comme Oracle, comment devons-nous procéder ?

Par exemple, il existe la définition de table suivante :

create table `t_user`(
    `id` bigint auto_increment primary key,
    `user_id` bigint unique comment '用户ID',
    `user_name` varchar(10) not null default '' comment '用户名'
);

où user_id nécessite un incrémentation automatique, un ordre et un caractère unique. Il existe de nombreuses méthodes d'implémentation, comme l'algorithme snowflake, utilisant Redis ou Zookeeper, etc. pour obtenir une valeur qui remplit les conditions, je ne les présenterai pas une par une ici. Nous présentons ici comment utiliser auto_increment et last_insert_id() de MySQL pour implémenter une séquence similaire à celle d'Oracle.

Méthode 1. Utiliser des procédures stockées

1. Créez une table simple contenant une clé primaire à incrémentation automatique.

L'exemple est le suivant :

create table `t_user_id_sequence` (
    `id` bigint not null auto_increment primary key,
    `t_text` varchar(5) not null default '' comment 'insert value'
);

2. Créez une procédure stockée

delimiter &&
create procedure `pro_user_id_seq` (out sequence bigint)
begin
    insert into t_user_id_sequence (t_text) values ('a');
    select last_insert_id() into sequence from dual;
    delete from t_user_id_sequence;
end &&
delimiter ;

3. Test

call pro_user_id_seq(@value);
select @value from dual;

L'utilisation de la procédure stockée nécessite d'appeler la procédure stockée une fois, puis d'attribuer la valeur, ce qui est un peu gênant.

Méthode 2. Utiliser la fonction

1 Créer une fonction qui génère une séquence

delimiter &&
create function user_id_seq_func() returns bigint
begin
    declare sequence bigint;
    insert into t_user_id_sequence (t_text) values ('a');
    select last_insert_id() into sequence from dual;
    delete from t_user_id_sequence;
    return sequence;
end &&
delimiter ;

2 Test

select user_id_seq_func() from dual;
 
insert into t_user (user_id, user_name) values (user_id_seq_func(), 'java');
select * from t_user;

Apprentissage recommandé : Tutoriel vidéo MySQL

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer