bonjour

voici une commande de création de table sqllite exécute avec dbeaver 5.0.3 .

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 CREATE TABLE l_actes(
            ACT_CODE text(255),
            ACT_LIBELLE text(255),
            CONSTRAINT actes_pk PRIMARY KEY(ACT_CODE)); 
 
 
 CREATE TABLE l_actes2(
            ACT_CODE text(255),
            ACT_LIBELLE text(255),
            CONSTRAINT actes_pk PRIMARY KEY(ACT_CODE));
On voit que la CONSTRAINT d'intégrité portant la même dénomination "actes_pk " ne pose pas de problème à Sqlite.

Oui ceci n’est pas très propres.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 CREATE TABLE l_actes(
            ACT_CODE varchar(255),
            ACT_LIBELLE varchar(255),
            CONSTRAINT actes_pk PRIMARY KEY(ACT_CODE)); 
 
 
 CREATE TABLE l_actes2(
            ACT_CODE varchar(255),
            ACT_LIBELLE varchar(255),
            CONSTRAINT actes_pk PRIMARY KEY(ACT_CODE));

voici la même requête code transposé en Postgre.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SQL Error [42P07]: ERREUR: la relation « actes_pk1 » existe déjà
  SQL Error [42P07]: ERREUR: la relation « actes_pk1 » existe déjà
    SQL Error [42P07]: ERREUR: la relation « actes_pk1 » existe déjà
      SQL Error [42P07]: ERREUR: la relation « actes_pk1 » existe déjà
        ERREUR: la relation « actes_pk1 » existe déjà
        ERREUR: la relation « actes_pk1 » existe déjà
On voit que pour ce qui concerne Postgre (version 10) même pour 2 bases différentes il faut différentier les relations tel que les contraintes de clé uniques.

Donc pour être plus propre en SQLLITE


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 CREATE TABLE l_actes(
            ACT_CODE text(255),
            ACT_LIBELLE text(255),
            CONSTRAINT actes_pk PRIMARY KEY(ACT_CODE)); 
 
 
 CREATE TABLE l_actes2(
            ACT_CODE text(255),
            ACT_LIBELLE text(255),
            CONSTRAINT actes_pk2 PRIMARY KEY(ACT_CODE));
POSTGRE 10

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 CREATE TABLE l_actes(
            ACT_CODE varchar(255),
            ACT_LIBELLE varchar(255),
            CONSTRAINT actes_pk1 PRIMARY KEY(ACT_CODE)); 
 
 
 CREATE TABLE l_actes2(
            ACT_CODE varchar(255),
            ACT_LIBELLE varchar(255),
            CONSTRAINT actes_pk2 PRIMARY KEY(ACT_CODE));
Dommage que SQLLITE ne remonte pas d'erreur similaire à Postgre lors de la création.