Boa noite!
No ORACLE criei uma sequencia e uma Triggers que é disparada sempre ao cadastrar um cliente.
CREATE SEQUENCE XXX_XXX.SEQ_CLIENTE MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE ;
Triggers
create or replace
TRIGGER INC_CLIENTE
BEFORE INSERT ON CLIENTE FOR EACH ROW
BEGIN
SELECT SEQ_CLIENTE.NEXTVAL
INTO :NEW.PK_CLIENTE
FROM DUAL;
END;
mas digamos que eu cadastre 2 clientes, e exclua esses dois, quando eu cadastrar o terceiro o sistema grava o cliente como o cliente 3.
Alguem pode me ajudar?
E vc queria que ele gravasse como cliente 1?
Olha só, se vc definiu na trigger que a tabela deve usar auto incremento, acho que vc deve alterar a lógica, pois o banco ta fazendo o que vc pediu.
Talvez se vc criasse uma trigger que ao invés de realizar o autoincremento, capturasse o último registro inserido fazendo com que vc incrementasse +1 na hora da inserção.
Uma coisa tome cuidado.
Manipular o Id da tabela na mao pode te causar algumas dores de cabeca.
A dica do amigo acima funcionara. Porem imagine o seguinte, no meio tempo que voce fez o select para pegar o ultimo alguem vai e add um novo registro.
Voce vai ter uma duplicidade de ID.
A sequence seria a melhor coisa para se usar.
Mas se o problema for duplicidade no acesso a tabela, isso não é o problema. Existe uma coisa chamada lock, onde a tabela não pode ser acessada por duas pessoas ao mesmo tempo.