Bonjour,
sur ma table_1, lors d'une insertion, je veux déclencher un trigger qui fera une insertion sur table_2. Cette dernière insertion prend ses valeurs depuis une table_3.
Je suis tout neuf en postgreSQL et je veux juste faire des tests. Pour le moment, ma base est en SQLITE.
Pour SQLITE, j'avais :
La table 2 est simple, elle a 3 colonnes. Je note toutes mes primary key avec la syntaxe id_nomDeLaTable. Sur le code ci-dessus, vous voyez que je fixe une colonne à null dans mon SELECT, le nut n'est pas d'insérer la valeur NULL mais de laisser le soin à SQLITE de mettre la bonne valeur tout seul.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE TRIGGER `trig_table_1_AINS` AFTER INSERT ON table_1 FOR EACH ROW BEGIN INSERT INTO table_2 SELECT null, NEW.id_table_1, id_table_3 FROM table_3; END
Je veux faire l'équivalent en postgreSQL mais je galère. Si je laisse le null, pg me dit que je peux pas insérer null. Si j'essaies de spécifier les colonnes de destination, je sais pas comment mettre le SELECT.
Voilà le code pg que j'ai:
C'est peut-être peu important mais ma table_3 est une taille avec un nombre de lignes assez fixes (normalement, elle est remplie à la création et c'est tout).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE OR REPLACE FUNCTION trig_table_1_AINS() RETURNS trigger AS $BODY$ BEGIN INSERT INTO "table_2" SELECT null, NEW.id_table_1, "id_table_3 " FROM "table_3"; RETURN NULL; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION trig_table_1_AINS() OWNER TO myself;
Partager