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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    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

  3. #3
    Invité
    Invité(e)
    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
    Dernière modification par SergioMaster ; 17/11/2022 à 15h52. Motif: citation inutile

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    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 : 274
Taille : 31,2 Ko

    Le format dans une requête doit respecter la norme de firebird

  5. #5
    Invité
    Invité(e)
    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
    Dernière modification par SergioMaster ; 17/11/2022 à 18h08. Motif: citation inutile

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Rien à voir avec des performances il s'agit juste de préférences d'affichage

+ 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, 22h14
  2. Réponses: 2
    Dernier message: 10/01/2007, 23h28
  3. [ASE][T-SQL]Message d'erreur pendant INSERT
    Par Benjamin78 dans le forum Sybase
    Réponses: 3
    Dernier message: 23/03/2006, 10h38
  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, 16h28
  5. message d'erreur "Microsoft SQL-DMO"
    Par tachi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/08/2004, 11h47

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