2015-02-27 1 views
2

J'utilise postgres. Im sur le milieu du développement. J'ai besoin de créer une réplique de la table ABC. Je vais le nommer comme XYZ. J'ai essayé 'créer la table XYZ() hérite (ABC)'. Ça marche bien mais quand j'insère des valeurs sur XYZ, la table ABC est aussi peuplée (virtuellement). Im obtenir des valeurs en double lorsque je cours une requête quelque chose comme ceci 'select * de ABC où id = 1'. Je reçois l'enregistrement correct lorsque j'exécute une requête comme celle-ci 'select * de seulement ABC où id = 1'.est-il un moyen de créer un déclencheur sur l'ajout de colonnes?

Ceci est, je ne veux pas utiliser 'seulement'. Donc, je ne pense pas que l'héritage est ce dont j'ai besoin. Je veux juste demander s'il y a un moyen d'ajouter une colonne automatiquement sur XYZ lorsque je modifie (ajouter une colonne) ABC?

Je ne veux pas créer deux requêtes d'alt pour ABC et XYZ. J'ai besoin des deux tables pour avoir toujours les mêmes colonnes. Une idée?

+0

"* J'ai toujours besoin des deux tables pour avoir les mêmes colonnes *" - Je ne vois pas pourquoi vous n'utilisez pas simplement une seule table, plus une vue. Ce serait mieux si vous décrivez le vrai problème sous-jacent que vous essayez de résoudre plutôt que le problème que vous avez avec une mise en œuvre technique –

+0

Je veux utiliser d'abord la deuxième table. Voici le scénario de ce que je fais. – Clem

+0

Je veux utiliser d'abord la deuxième table. Voici le scénario de ce que je fais:
il y a un lien sur la page 1. En cliquant sur ce lien, un seul enregistrement sur la table ABC sera inséré sur la table XYZ (par ceci: 'insérer dans XYZ comme sélection * de ABC') puis page redirige vers la page 2. L'enregistrement inséré sur XYZ sera celui à utiliser sur la page2. Si 'édité', XYZ sera édité. Si 'sauvegardé et complété', la valeur sur XYZ modifiera l'enregistrement résidant sur ABC. Donc, fondamentalement, la table XYZ est juste une table temporaire. J'ai trois boutons sur la page 2. – Clem

Répondre

0

Le type de déclencheur dont vous parlez est généralement connu sous le nom de déclencheur DDL. Dans PostgreSQL, ils sont connus sous le nom event triggers. Cependant, je ne suis pas sûr que vous puissiez exécuter une instruction alter table dans un déclencheur d'événement PostgreSQL.

Je ne suis pas sûr que ce soit vraiment la solution que vous cherchez, cependant. Je pense que vous pourriez être au milieu d'un X-Y problem.

+0

mon chef d'équipe pense aussi que je dois chercher comment créer un trigger sur 'alter table'. Pour le moment, j'ai créé une fonction 'alter table' sur mon code pour obtenir tous les noms et types de table1 puis ajouter les colonnes inexistantes sur table2. – Clem