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.
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' );
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 ;
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.
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 ;
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!