Valeu Rafael, Eu estou utilizando banco ORACLE.
Grato, ----- Original Message ----- From: "Rafael Amantéa Mogone" <[EMAIL PROTECTED]> To: <delphi-br@yahoogrupos.com.br> Sent: Monday, March 20, 2006 10:11 AM Subject: RES: [delphi-br] PL/SQL Triggers Bom dia! Guilherme, acredito que isto seja viável sim ... Você pode criar uma trigger no before insert da tabela que verifica se o sequence é mesmo o proximo numero com condição para que, se o valor do sequence não for o próximo numero a ser incluso, você o atualiza e faz a inclusão ... Você não especificou qual BD vc usa, porém aqui vai um exemplo de trigger before insert que faz esta verificação: CREATE TRIGGER TG_Cliente_Codigo FOR Cliente ACTIVE BEFORE INSERT POSITION 0 AS DECLARE VARIABLE NCodigo INTEGER; DECLARE VARIABLE RESULTS INTEGER; DECLARE VARIABLE LOOPING CHAR(1); BEGIN IF ((NEW.Codigo IS NULL) OR (NEW.Codigo = 0)) THEN BEGIN LOOPING = 'S'; RESULTS = 0; WHILE (LOOPING = 'S') DO BEGIN NCodigo = GEN_ID(GEN_Cliente_Codigo,1); SELECT COUNT(Codigo) FROM CLIENTE WHERE Codigo = :NCodigo INTO RESULTS; IF (RESULTS = 0) THEN LOOPING = 'N'; END NEW.Codigo = :NCodigo; END END O que faz esta trigger? Testa se você enviou o código nulo ou 0. Se enviou, ele pega o valor do sequence (GEN_Cliente_Codigo - é um generator, utilizado em firebird), e vai aumentando e testando até achar um valor que não esteja cadastrado na tabela. Conforme seu banco de dados, você deve alterar. Este exemplo é mais para mostrar que isso é possível, viável e muito útil para evitar o key violation ehehehehe Espero que ajude, Rafael Amantéa Mogone Programador Delphi + Firebird Bauru / SP _____ De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Guilherme Silva Enviada em: segunda-feira, 20 de março de 2006 09:21 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] PL/SQL Triggers Olá a todos, Tenho uma aplicação que inclui dados em uma tabela e esta possui vários outros mecanismos externos de importação. A tabela possui uma sequence. Quando eu incluo através do software a sequence é executada, caso seja por meios externos essa sequence não está sendo executada. Tería alguma forma de eu craiar uma TRIGGER que analisaria os dados que estarão sendo gravados e caso estejam com numeros superiores à da sequence eu faria um UPDATE para o valor da sequence ? alguém poderia me dizer se isso é viável ? Grato, Guilherme [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Links do Yahoo! Grupos -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html