Pages: 1
- Sujet précédent - Postgres avec héritage des tables et colonne de type serial - Sujet suivant
#1 Fri 23 October 2020 11:49
- Alban NOIR
- Participant occasionnel
- Date d'inscription: 7 Sep 2005
- Messages: 32
Postgres avec héritage des tables et colonne de type serial
Bonjour,
J'ai des tables avec héritage qui pourraient ressembler à ça :
Code:
CREATE TABLE pokemon ( id serial PRIMARY KEY, nom character varying, "type" character varying, categorie character varying, taille double precision, poids double precision, generation integer ); CREATE TABLE type_electrik ( att_electrik1 integer, att_electrik2 integer ) INHERITS (pokemon); CREATE TABLE type_eau ( att_eau1 integer, att_eau2 integer ) INHERITS (pokemon);
Tout fonctionne bien quand je
Code:
INSERT INTO type_eau(nom, "type", categorie, taille, poids, generation,att_eau1, att_eau2) VALUES ('Carapuce', 'eau', 'Pokémon Minitortue', 0.5, 9, 1, 42, 64);
J'ai bien un enregistrement dans pokemon.id qui s’incrémente tout seul.
Depuis FME je souhaite insérer des features dans la table postgres type_eau
mais j'ai systématiquement une erreur.
2020-10-23 11:14:18| 1.5| 0.0|ERROR |Bulk copy failed on table 'public.type_eau' using delimiter ':'. Error was 'ERROR: null value in column "id" violates not-null constraint
Que je définisse dans FME le writer à 'Allow serial column writing' à yes ou no ou que je définisse explicitement le type de la colonne id à serial ou autre chose.
Comment faut il s'y prendre pour écrire dans Postgres sur une table avec héritage ayant une colonne de type serial?
Merci
Alban
Hors ligne
#2 Fri 23 October 2020 21:11
- p.jeremie
- Participant assidu
- Lieu: Valence
- Date d'inscription: 10 Sep 2017
- Messages: 414
Re: Postgres avec héritage des tables et colonne de type serial
Bonjour,
A voir, il y a peut-être un lien avec le problème décrit dans ce sujet sur le site de safe : https://community.safe.com/s/question/0 … 3479899797
A savoir, FME écrit (écrivait ? le sujet date de 2 ans) des valeurs NULL pour les attributs non précisés dans le writer postgres/postgis.
2 solutions proposée, notamment passer par un SQLExecutor dans lequel est exécuté l'INSERT avec seulement les valeurs à insérer. Ca permet de laisser la base de données gérer les valeurs par défaut pour les autres champs.
Hors ligne
#3 Mon 26 October 2020 08:56
- Alban NOIR
- Participant occasionnel
- Date d'inscription: 7 Sep 2005
- Messages: 32
Re: Postgres avec héritage des tables et colonne de type serial
Bonjour,
Oui j'avais lu ce billet de la base de connaissance de Safe et effectivement les logs Postgres montrent bien que FME (2020 dans mon cas) envoie des valeurs Null pour les colonnes héritées de type serial.
Je pourrais effectivement faire un SQLExecutor (encore qu'il est difficile de gérer proprement les transactions) mais tant qu'à faire autant passer par des tables pivots et post traiter en SQL.
Merci
Alban
Hors ligne
#4 Tue 27 October 2020 21:03
- n314
- Participant assidu
- Date d'inscription: 6 Sep 2005
- Messages: 697
Re: Postgres avec héritage des tables et colonne de type serial
J arrive par la bande, attention a ne pas considerer la capacité d heritage de postgre de la meme manière qu en développement objet. Bien verifier les limites de l implémentation d héritage par pg, cf https://www.postgresql.org/docs/current … herit.html. En très court,l héritage c est plutôt pour fractionner/répartir la donnée.
Dernière modification par n314 (Tue 27 October 2020 21:05)
Hors ligne
Pages: 1
- Sujet précédent - Postgres avec héritage des tables et colonne de type serial - Sujet suivant