Reiniciar uma sequencia.
Olá amigos.
Tenho uma tabela onde tenho:
ID
Data
Os dois campos são chave primaria.
ID é gerado sequencialmente e a data é a data do dia.
Gostaria que qdo o ID marcasse 999 ele iniciasse no 1, 2, 3, 4.....(iniciasse uma nova sequencia).
Obrigado
Tenho uma tabela onde tenho:
ID
Data
Os dois campos são chave primaria.
ID é gerado sequencialmente e a data é a data do dia.
Gostaria que qdo o ID marcasse 999 ele iniciasse no 1, 2, 3, 4.....(iniciasse uma nova sequencia).
Obrigado
Alecsandro Sorrilha
Curtidas 0
Respostas
Daniel Araújo
30/05/2017
Boa tarde Alecsandro!
Acredito que é quase unanimidade hoje ter um campo auto incremento com chave primária e deixar essa responsabilidade com o banco. Mas se você quer mesmo cuidar disso, crie uma função para retornar o próximo id:
E quando for fazer o insert, utilize a função:
Fiz o exemplo com o sql server. Você adapta para o banco que estiver utilizando.
Se a resposta for útil não esqueça de dar um like!
Acredito que é quase unanimidade hoje ter um campo auto incremento com chave primária e deixar essa responsabilidade com o banco. Mas se você quer mesmo cuidar disso, crie uma função para retornar o próximo id:
CREATE FUNCTION ObterProximoId() RETURNS INT AS BEGIN DECLARE @MaiorId INT, @ProximoId INT; SET @MaiorId = (SELECT MAX(id) FROM tabela); IF (@MaiorId = 999) SET @ProximoId = 1; ELSE SET @ProximoId = @MaiorId + 1; RETURN @ProximoId; END;
E quando for fazer o insert, utilize a função:
INSERT INTO tabela(id, data) VALUES(dbo.ObterProximoId(), GETDATE());
Fiz o exemplo com o sql server. Você adapta para o banco que estiver utilizando.
Se a resposta for útil não esqueça de dar um like!
GOSTEI 0
Mateus Ribeiro
30/05/2017
Bom dia! Qual banco de dados você utiliza?
E outra, a junção desses dois campos formam UMA chave primária ou cada uma é chave primaria individualmente?
E outra, a junção desses dois campos formam UMA chave primária ou cada uma é chave primaria individualmente?
GOSTEI 0
Alecsandro Sorrilha
30/05/2017
Bom dia amigos. Utilizo sqlserver e firebird!
Fiz com o amigo Daniel posto e deu certo.
Agradeço as vcs.
Fiz com o amigo Daniel posto e deu certo.
Agradeço as vcs.
GOSTEI 0