IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Firebird Discussion :

[AIDE] SQL de A à Z : Message d'erreur


Sujet :

Firebird

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2022
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2022
    Messages : 45
    Points : 24
    Points
    24
    Par défaut [AIDE] SQL de A à Z : Message d'erreur
    Bonjour,

    Je suis actuellement en train de faire les exercices présents sur le même site depuis ce lien : https://sqlpro.developpez.com/cours/bddexemple/ Et je ne parviens pas à comprendre pourquoi sur FlameRobin je ne peux pas insérer la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 1,  '01/01/1999',  220.00);
    J'ai besoin d'aide pour comprendre le message d'erreur qui s'affiche lors de cet insert (issus du fichier insertFR téléchargeable depuis le meme lien au point IV. Création des données)
    Executing statement...
    Error: *** IBPP::SQLException ***
    Context: Statement::Execute( insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 1, '01/01/1999', 220.00) )
    Message: isc_dsql_execute2 failed

    SQL Message : -803
    Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values

    Engine Code : 335544665
    Engine Message :
    violation of PRIMARY or UNIQUE KEY constraint "INTEG_57" on table "TJ_TRF_CHB"
    Problematic key value is ("CHB_ID" = 1, "TRF_DATE_DEBUT" = '1999-01-01')
    il s'agit d'une insertion dans un table qui a été créée comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    create table TJ_TRF_CHB (
    CHB_ID INTEGER not null,
    TRF_DATE_DEBUT DATE not null,
    TRF_CHB_PRIX NUMERIC(8,2) not null,
    primary key (CHB_ID, TRF_DATE_DEBUT)
    );
    -- index
    create unique index IDX_TJ_TRF_CHB_PK on TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT);
    create index IDX_L_CHB_TRF_FK on TJ_TRF_CHB (CHB_ID);
    Je précise d'ailleurs que j'ai longuement chercher pour afficher la DATE sous le format DD/MM/YYYY et toujours rien qui me vient (mises à part l'idée de créer un nom de domaine différent pour le type de TRF_DATE_DEBUT mais ça n'a pas fonctionné.... Merci d'avance à ceux qui me liront et m'épauleront dans ma refléxion
    A+

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 088
    Points : 38 144
    Points
    38 144
    Billets dans le blog
    59
    Par défaut
    Bonjour
    Citation Envoyé par environnementBash Voir le message
    Voici réellement mon problème à ce sujet,lorsque j'essaie d'insérer la ligne suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values ( 1,  '01/01/1999',  220.00);
    Le format de date utilisé dans le code insert n'est pas forcément le bon, 01/01/1999 est ambigu et sera interprété comme JANVIER 01 1999 et non en dd-mm-yyyy. Voici les formats reconnus

    Mais votre erreur n'est pas là, l'erreur indique simplement que vous avez déjà une ligne identique.

    Essayez ce script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    RECREATE table TJ_TRF_CHB (
    CHB_ID INTEGER not null,
    TRF_DATE_DEBUT DATE not null,
    TRF_CHB_PRIX NUMERIC(8,2) not null,
    primary key (CHB_ID, TRF_DATE_DEBUT)
    );
    -- index
    create unique index IDX_TJ_TRF_CHB_PK on TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT);
    create index IDX_L_CHB_TRF_FK on TJ_TRF_CHB (CHB_ID);
    COMMIT;
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values (1,'20.01.1999',  220.00);
    insert into TJ_TRF_CHB (CHB_ID, TRF_DATE_DEBUT, TRF_CHB_PRIX) values (2,'20.01.1999',  250.00);
    SELECT * FROM TJ_TRF_CHB;
    Citation Envoyé par résultat
    CHB_ID,TRF_DATE_DEBUT,TRF_CHB_PRIX
    1 20.01.1999 220.00
    2 20.01.1999 250.00
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2022
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2022
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Merci pour votre retour,
    Puis-je vous demander si FlameRobin comprend que le format passe de MMDDYYYY à DDMMYYYY simplement en remplaçant les / par des points comme vous l'avez fait dans l'insert que vous proposez svp ? Mon anglais est moyen et je n'ai pas compris cette partie dans le manuel de FIrebird....


    Mise à jour de mon dernier commentaire pour apporter plus de clarté à mon problème :
    Ce que je ne comprends pas dans mes recherches sur firebirds (documentations en anglais...) c'est quel est le type par défaut de DATE (qui s'affiche en bleu) sur flamerobin svp ? Cela me permettra de mieux comprendre comment flamerobin interprète le fait de changer des ' / en . ' dans un insert svp

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 088
    Points : 38 144
    Points
    38 144
    Billets dans le blog
    59
    Par défaut
    Ce n'est pas tant Flamerobin que Firebird qui utilise certains formats précis de date (lien déjà fourni sans mon poste précédent)
    FlameRobin permet de changer le format d'affichage des dates i.e dans cet écran (view/preference) vous pouvez très bien mettre D/M/Y à la place de D.M.Y bien que je ne le conseille pas pour des raisons pratique niveau copies de résultats pour des SQL insert générés par exemple.
    Nom : Capture.PNG
Affichages : 29
Taille : 31,2 Ko

    Le format dans une requête doit respecter la norme de firebird
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2022
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2022
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Mille mercis pour m'avoir éclairé à ce sujet. J'ai bien entendu consulté et lu le lien déjà fourni dans votre poste précédent, mais mon anglais reste encore à améliorer...

    Puis-je vous poser ma dernière question à ce sujet s'il vous plait car cela me sera d'une aide précieuse ?
    En posant mon curseur sur 'Re-format float and double precision numbers' (voir l'image jointedans votre précédent message), j'ai pu lire ceci en anglais (que je ne comprends pas très bien l'intérêt) 'if unchecked, print decimals numbers as returned from servers'. Je pose cela car chez moi la case pour 'Re-format floatand double precision numbers' n'était pas coché par défault et c'était mis sur '2'.Donc j'ai fait ma recherche et si j'ai bien compris, il s'agirait d'un format à virgule (précision double) qui consomme 64 bits et que le mettre à 0 (comme dans votre capture d'écran), cela permetrait peut-être de faire des 'économies de performances de calculs' par exemple au niveau de la consommation svp ?

    Bonne journée

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    14 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 14 088
    Points : 38 144
    Points
    38 144
    Billets dans le blog
    59
    Par défaut
    Rien à voir avec des performances il s'agit juste de préférences d'affichage
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2022
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2022
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Rien à voir avec des performances il s'agit juste de préférences d'affichage
    Merci beaucoup. Je marque la discussion comme résolue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. inportation *.sql = message d' erreur
    Par Blaireau dans le forum Outils
    Réponses: 3
    Dernier message: 04/02/2007, 23h14
  2. Réponses: 2
    Dernier message: 11/01/2007, 00h28
  3. [ASE][T-SQL]Message d'erreur pendant INSERT
    Par Benjamin78 dans le forum Sybase
    Réponses: 3
    Dernier message: 23/03/2006, 11h38
  4. [VBA-E+SQL] Message d'erreur et excel qui plante
    Par Deejoh dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/02/2006, 17h28
  5. message d'erreur "Microsoft SQL-DMO"
    Par tachi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/08/2004, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo