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: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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