Maison > base de données > tutoriel mysql > 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
Libérer: 2022-09-13 18:01:45
avant
3110 Les gens l'ont consulté

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 '用户名'
);
Copier après la connexion

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'
);
Copier après la connexion

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 ;
Copier après la connexion

3. Test

call pro_user_id_seq(@value);
select @value from dual;
Copier après la connexion

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 ;
Copier après la connexion

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;
Copier après la connexion

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!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal