Reiniciar uma sequencia.

Delphi

30/05/2017

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
Alecsandro Sorrilha

Alecsandro Sorrilha

Curtidas 0

Respostas

Daniel Araújo

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:

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

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?
GOSTEI 0
Alecsandro Sorrilha

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.
GOSTEI 0
POSTAR