Comment obtenir manuellement la clé primaire d'auto-incrémentation dans MySQL : maintenir une table de séquences pour obtenir des données en créant une procédure stockée et en ajoutant une fonction. Le code est [last_number = last_number + incrément_by].
Méthode manuelle MySQL pour obtenir la clé primaire à incrémentation automatique :
Ajouter par créer une procédure stockée Maintenir une table de séquence pour obtenir des données de manière fonctionnelle (la résoudre une fois et l'utiliser à vie).
Vous pouvez spécifier la taille de chaque incrément et le numéro initial.
select nextval('TESTDATA') AS batchId CREATE DEFINER=`admin`@`%` FUNCTION `nextval`(seq_name VARCHAR (50)) RETURNS bigint(20) BEGIN UPDATE SEQUENCES SET last_number = last_number + increment_by WHERE sequence_name = seq_name; RETURN currval (seq_name); END;
CREATE DEFINER=`admin`@`%` FUNCTION `currval`(seq_name VARCHAR (50)) RETURNS bigint(20) NO SQL BEGIN SELECT last_number INTO @VALUE FROM SEQUENCES WHERE sequence_name = seq_name; RETURN @VALUE; END;
DROP TABLE IF EXISTS `sequences`; CREATE TABLE `sequences` ( `sequence_owner` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, `sequence_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, `min_value` bigint(20) NULL DEFAULT 1, `max_value` bigint(20) NULL DEFAULT NULL, `increment_by` bigint(20) NOT NULL DEFAULT 1, `cycle_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, `order_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL, `cache_size` bigint(20) NOT NULL, `last_number` bigint(20) NOT NULL, PRIMARY KEY (`sequence_name`) USING BTREE, UNIQUE INDEX `sel`(`sequence_owner`, `sequence_name`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Compact; -- ---------------------------- -- Records of sequences -- ---------------------------- INSERT INTO `sequences` VALUES ('SCM', 'TESTDATA', 1, 9999999999, 1, 'N', 'Y', 20, 0); INSERT INTO `sequences` VALUES ('SCM', 'SEQ', 1, 9999999999, 1, 'N', 'N', 20, 0); SET FOREIGN_KEY_CHECKS = 1;
Plus de recommandations d'apprentissage gratuites associées :tutoriel mysql(vidéo)
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!