Como faço para incrementar o codigo das tabelas de 2 em 2 codigos ou mais?
Ex.: de um cod. 1 para 3 depois 5 ja de outra tabela de 2 para 4 depois 6 e assim por diante…
Fico no aguardo e agradeço aos que puderem me ajudar.
Como faço para incrementar o codigo das tabelas de 2 em 2 codigos ou mais?
Ex.: de um cod. 1 para 3 depois 5 ja de outra tabela de 2 para 4 depois 6 e assim por diante…
Fico no aguardo e agradeço aos que puderem me ajudar.
[quote=jeanton]Como faço para incrementar o codigo das tabelas de 2 em 2 codigos ou mais?
Ex.: de um cod. 1 para 3 depois 5 ja de outra tabela de 2 para 4 depois 6 e assim por diante…
Fico no aguardo e agradeço aos que puderem me ajudar.
[/quote]
Sinceramente gostaria de saber porque os números precisam ter essa progressão, dado que normalmente os ids das tabelas são apenas chaves artificiais e deveriam apenas ser usados para fazer os relacionamenos entre tabelas (aumento de desempenho).
Se mesmo assim vc precisa disso (ainda queria saber a razão), a anotação @GeneratedValue talvez possa ser configurada para atribuir esse comportamento. Dê uma pesquisa no Google.
[]´s
Preciso disso para um trabalho com replicação onde vou ter 2 bancos de dados. um MYSQL e um Firebird, onde cada um tera um sistema logado. o Firebird tem um em Delphi, o MYSQL um sistema web, e cada um trabalha independente. para não conflitar os ids, preciso q o web tenha uma sequencia e o local outro. pois nao posso mudar a regra do local, senao colocaria uma seq. de cadastro onde teria uma regra com um codigo fixo e tal sempre sendo add ao cod. como sempre add 1 no banco firebird, e sempre 2 no banco mysql, mas ele ja funciona assim sequencial. no firebird ja mudei via Trigger para incrementar de 2 em 2, mas no MYSQL não sei como fazer.
Mas preciso de algo que mude o incremento direto no MYSQL. Tem como?
Conseguiu entender a necessidade?
Valeu, consegui encontrar a solução.
DELIMITER |
CREATE DEFINER = ‘root’@‘localhost’ TRIGGER increment
BEFORE INSERT
ON grupo
FOR EACH ROW
BEGIN
set NEW.id = (select ifnull( max( id
) , 0 ) + 2 from GRUPO
);
END|
DELIMITER ;
E ai cara…
Vi seu post, e estou querendo fazer a mesma coisa, mas na verdade o banco que eu tenho dominio é postgres, mas na minha aplicacao vou ter q mexer com um banco mysql que já existe, mas preciso alterar este comportamento do auto incremento.
Vou ter que criar uma trigger para cada tabela que desejo mudar a forma do auto incremento ?
valeu…
Eu achei isso no site do mysql
auto_increment_increment controls the interval between successive column values. For example:
mysql> SHOW VARIABLES LIKE ‘auto_inc%’;
±-------------------------±------+
| Variable_name | Value |
±-------------------------±------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
±-------------------------±------+
2 rows in set (0.00 sec)
mysql> CREATE TABLE autoinc1
-> (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.04 sec)
mysql> SET @@auto_increment_increment=10;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE ‘auto_inc%’;
±-------------------------±------+
| Variable_name | Value |
±-------------------------±------+
| auto_increment_increment | 10 |
| auto_increment_offset | 1 |
±-------------------------±------+
2 rows in set (0.01 sec)
mysql> INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> SELECT col FROM autoinc1;
±----+
| col |
±----+
| 1 |
| 11 |
| 21 |
| 31 |
±----+
4 rows in set (0.00 sec)
tem mais detalhes no site.
http://dev.mysql.com/doc/refman/5.0/en/replication-options-master.html#sysvar_auto_increment_increment
Espero que ajude
Valeu cara, era isso mesmo que eu precisava…
Não foi nada
O esquema é compartilhar conhecimento
Entao cara, executei oq vc me passou, mas ele so funciona naquele momento, quando reinicio o mysql volta para increment = 1, qual arquivo de configuracao poderia setar isso como default ?
valeu…
Consegui resolver…
Coloquei auto_increment_increment = 3 no arquivo /etc/my.cnf em [mysqld]
t+