Fórum Reiniciar uma sequencia. #581939

30/05/2017

0

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

Responder

Posts

30/05/2017

Daniel Araújo

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!
Responder

Gostei + 0

31/05/2017

Mateus Ribeiro

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?
Responder

Gostei + 0

31/05/2017

Alecsandro Sorrilha

Bom dia amigos. Utilizo sqlserver e firebird!
Fiz com o amigo Daniel posto e deu certo.
Agradeço as vcs.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar