Je veux que ma colonne d'incrément automatique augmente à l'étape de 3 sur insertion.
Puis-je faire quelque chose comme:
Alter table `mytable` auto_increment = (select max(id) from mytable) + 3;
dans une gâchette?
Je comprends que MySQL a un paramètre Auto_inCrementi_incrême, mais puisque je suis sur un serveur partagé, je ne peux pas le changer.
Dans MySQL, vous pouvez insérer directement dans la colonne Auto_Increment. Donc, prenez cet exemple de MySQL Manual:
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM;
INSERT INTO animals (name) VALUES
('dog'),('cat'),('penguin'),
('lax'),('whale'),('ostrich');
SELECT * FROM animals;
Qui retourne:
+----+---------+
| id | name |
+----+---------+
| 1 | dog |
| 2 | cat |
| 3 | penguin |
| 4 | lax |
| 5 | whale |
| 6 | ostrich |
+----+---------+
Essayons ça:
TRUNCATE TABLE animals;
CREATE TRIGGER increment_insert BEFORE INSERT ON animals
FOR EACH ROW
SET NEW.id = (SELECT MAX(id) + 2 FROM animals);
INSERT INTO animals (name) VALUES
('dog'),('cat'),('penguin'),
('lax'),('whale'),('ostrich');
SELECT * FROM animals;
Qui retourne:
| ID | NAME |
|----|---------|
| 1 | dog |
| 3 | cat |
| 5 | penguin |
| 7 | lax |
| 9 | whale |
| 11 | ostrich |
(BTW, ce n'est pas une étape de 3, c'est une étape de 2 vous êtes après)