[Issue] LibO : redémarrage index automatique sur Firebird

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
camil
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 28 mai 2019 08:53

[Issue] LibO : redémarrage index automatique sur Firebird

Message par camil »

Bonjour,

J'ai un soucis avec firebird :
Quand je vide une table et qu'ensuite je lance :
ALTER TABLE T_TEST ALTER COLUMN ID_TEST RESTART WITH 0
(ou ALTER TABLE T_TEST ALTER COLUMN ID_TEST RESTART WITH 1, c'est pareil)
Je reçois le message d'erreur suivant:
1: firebird_sdbc error:
*violation of PRIMARY or UNIQUE KEY constraint "INTEG_36" on table "T_TEST"
caused by
'ALTER TABLE T_TEST ALTER COLUMN ID_TEST RESTART WITH 0'

Pour autant la numérotation auto reprend bien à partir de 1 (Pourquoi ronchone-t'il alors ?...)
Y a-t'il une instruction différente dans firebird (je n'ai rien trouvé de pertinent sur le net)
LibreOffice 6.3.5 X64 - Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Reset champ auto sur Libreoffice Base Firebird

Message par jeanmimi »

Bonjour,
Il manque peut-être des guillemets :

Code : Tout sélectionner

ALTER TABLE "T_TEST" ALTER COLUMN "ID_TEST" RESTART WITH 0
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
camil
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 28 mai 2019 08:53

Re: Reset champ auto sur Libreoffice Base Firebird

Message par camil »

En fait, en intégrant la commande dans une macro :
resSQL = " ALTER TABLE T_TEST ALTER COLUMN ID_TEST RESTART WITH 0 "
ça fonctionne.
Mais avec resResultat as object et excuteQuery (avec HLQSDB j'utilisais long et executeUpdate)
Je note toutefois que RESTART WITH 0 démarre la nouvelle ID à 1 - je trouve ça étrange.
Noter aussi que le champauto d'une nouvelle table démarre à 1 - chez moi en tout cas (windows 10 & Libreoffice 6.1.6.3)

Code : Tout sélectionner

	dim resSQL As String, resRequete As Object
'	dim resResultat as long
	dim resResultat as object
	
	resSQL = " ALTER TABLE T_TEST ALTER COLUMN ID_TEST RESTART WITH 0 "
	resRequete = maConnexion.createStatement()
'	resResultat = resRequete.executeUpdate(resSQL)
	resResultat = resRequete.executeQuery(resSQL)

Mais ça plante quand même... à la troisième fois...
Je suppose que le problème vient d'ailleurs, je ne sais (mes macros qui sont bancales ?)
Je mets la base en pièce jointe.
Quand j'ouvre le fichier puis le formulaire et que j'enchaîne saisie + efface enr. + actualise + reset ID ça fonctionne bien deux fois et ça plante à la troisième fois
En fermant le fichier et en recommençant, rebelote.

Si quelqu'un a de la lumière...
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.3.5 X64 - Windows 10
camil
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 28 mai 2019 08:53

Re: Reset champ auto sur Libreoffice Base Firebird

Message par camil »

jeanmimi a écrit :Bonjour,
Il manque peut-être des guillemets :

Code : Tout sélectionner

ALTER TABLE "T_TEST" ALTER COLUMN "ID_TEST" RESTART WITH 0
J'ai essayé dans ma macro. Avec un guillement simple il ne comprend pas l'instruction (Ca la tronque)
Avec des guillemets doubles :
resSQL = " ALTER TABLE ""T_TEST"" ALTER COLUMN ""ID_TEST"" RESTART WITH 0 "
il comprend bien mais j'ai le même plantage au troisième essai...
LibreOffice 6.3.5 X64 - Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Reset champ auto sur Libreoffice Base Firebird

Message par jeanmimi »

La Macro plante dès sa première exécution.

La manœuvre que j’avais faite, décrite plus haut, était réussie par lancement du code de la Requête par "SQL direct".
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
camil
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 28 mai 2019 08:53

Re: Reset champ auto sur Libreoffice Base Firebird

Message par camil »

jeanmimi a écrit :La Macro plante dès sa première exécution.
Non, je viens de vérifier. Rien d'autre ouvert, je viens de redémarrer l'ordi.
La base est enregistrée et la macro plante à la 3ème exécution. Et ça recommence après fermeture-ouverture du fichier . Je confirme absolument...
jeanmimi a écrit :La manœuvre que j’avais faite, décrite plus haut, était réussie par lancement du code de la Requête par "SQL direct".
J'ai donc ré-essayé d'entrer deux enregistrements directement dans la table (sans passer par le formulaire), puis de supprimer les deux lignes et en SQL direct :
ALTER TABLE "T_TEST" ALTER COLUMN "ID_TEST" RESTART WITH 0
Dans la case Etat il répond :
1:
Idem à la deuxième tentative, ça fonctionne. Puis pareil à la troisième tentative, j'ai en retour:
1: firebird_sdbc error:
*Dynamic SQL Error
*SQL error code = -104
*Token unknown - line 1, column 1
*1
caused by
'isc_dsql_prepare'

Je précise que je viens de faire ouverture du fichier puis trois tentatives (jusqu'au plantage) et fermeture. Tout ceci trois fois de suite avec la commande SQL directe.
Et pour être sûr de tout, j'ai refait les 9 essais avec la macro. C'est absolument régulier... :fou:
LibreOffice 6.3.5 X64 - Windows 10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: Reset champ auto sur Libreoffice Base Firebird

Message par DLE »

Bonjour,

Sur Bugzilla j'ai trouvé ceci
Il n'y a pas encore de solution.
Cdlt.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
camil
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 28 mai 2019 08:53

Re: Reset champ auto sur Libreoffice Base Firebird

Message par camil »

DLE a écrit : Sur Bugzilla j'ai trouvé ceci
Je suis allé voir (Merci du renseignement - Je me sens moins seul d'un coup). A tout hasard j'ai essayé comme proposé dans le dernier message :

Code : Tout sélectionner

ALTER TABLE T_TEST ALTER ID_TEST RESTART WITH 0
Puis le même avec les guillemets. Toujours ce plantage.
Je reste donc en stand-by en laissant le sujet ouvert et en espérant des news à l'occasion.
LibreOffice 6.3.5 X64 - Windows 10