A importância de nomes únicos

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

A importância de nomes únicos

Mensagem por JoséQuintas »

/* Erro SQL (1062): Duplicate entry '05.999.041/0001-12-. . -' for key 'INDICE' */
/* Arquivo "backup1.sql" executado, com consultas 2.246 e linhas afetadas 233.282 */
E agora, deu erro aonde?
É na restauração do backup.
é em uma das 233.282 linhas.....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

A importância de nomes únicos

Mensagem por JoséQuintas »

Não faz sentido estar gravado repetido.
Na dúvida incluir uma possível correção na próxima atualização.
Pensando bem, pode ter sido o backup com tudo em uso, foi incluída uma chave nova que mudou a ordem pra continuação do backup.

Código: Selecionar todos

STATIC FUNCTION Update1018()

   LOCAL cnSQL := ADOLocal(), aList := {}, aItem, lDelete

   WITH OBJECT cnSQL
      :Execute( "SELECT ENEMINFE, ENDESNFE, COUNT(*) AS QTD" + ;
         " FROM JPEMANFE" + ;
         " GROUP BY ENEMINFE, ENDESNFE" + ;
         " HAVING COUNT(*) > 1" )
      DO WHILE ! :Eof()
         AAdd( aList, { :String( "ENEMINFE" ), :String( "ENDESNFE" ) } )
         :MoveNext()
      ENDDO
      :CloseRecordset()
      FOR EACH aItem IN aList
         :Execute( "SELECT * FROM JPEMANFE WHERE ENEMINFE=" + StringSQL( aItem[1] ) + ;
            " AND ENDESNFE=" + StringSQL( aItem[2] ) )
         lDelete := .F.
         DO WHILE ! :Eof()
            IF lDelete
               :ExecuteNoReturn( "DELETE FROM JPEMANFE WHERE IDEMANFE=" + NumberSQL( :Number( "IDEMANFE" ) ) )
            ELSE
               lDelete := .T.
            ENDIF
            :MoveNext()
         ENDDO
         :CloseRecordset()
      NEXT
   ENDWITH

   RETURN Nil
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder