Récupération de valeurs de séquence dans MySQL
Dans MySQL, l'attribut AUTO_INCREMENT peut être utilisé pour générer des valeurs séquentielles uniques pour les lignes. Contrairement à NEXTVAL d'Oracle, qui renvoie la valeur de séquence suivante sans nécessiter d'insertion, MySQL nécessite l'utilisation d'une requête ou d'un déclencheur pour récupérer la valeur d'auto-incrémentation actuelle.
Pour obtenir la valeur actuelle, vous pouvez utiliser ce qui suit query :
SELECT Auto_increment FROM information_schema.tables WHERE table_name='<table_name>';
Incrémentation de la valeur d'incrémentation automatique lors de la requête
Pendant que La requête ci-dessus récupère la valeur actuelle, elle ne l'incrémente pas. Pour simuler le comportement de NEXTVAL d'Oracle, vous pouvez utiliser une combinaison d'une requête SELECT et d'une instruction UPDATE :
BEGIN; -- Retrieve the current value SELECT Auto_increment INTO @current_value FROM information_schema.tables WHERE table_name='<table_name>'; -- Increment the value UPDATE information_schema.tables SET Auto_increment = Auto_increment + 1 WHERE table_name='<table_name>'; COMMIT; -- Use the current value SELECT @current_value;
Utilisation du modèle Spring JDBC
Si vous êtes En utilisant le modèle Spring JDBC, vous pouvez obtenir les fonctionnalités de NEXTVAL d'Oracle en utilisant un fichier stocké. procédure :
CREATE PROCEDURE get_next_id(OUT result INT) BEGIN SELECT Auto_increment INTO result FROM information_schema.tables WHERE table_name='<table_name>'; UPDATE information_schema.tables SET Auto_increment = Auto_increment + 1 WHERE table_name='<table_name>'; END;
Ensuite, exécutez la procédure stockée à l'aide du modèle Spring JDBC :
class AnimalRepository { private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; public Integer getNextId() { Map<String, Integer> result = namedParameterJdbcTemplate.queryForMap("CALL get_next_id()", Map.of()); return result.get("result"); } }
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!