Maison >base de données >tutoriel mysql >Comment puis-je modifier les colonnes PostgreSQL sans recréer les vues dépendantes ?
Assouplissement des modifications des colonnes PostgreSQL dans les vues
PostgreSQL garantit l'intégrité des données en exigeant que les vues soient recréées chaque fois que les colonnes qui y sont utilisées sont modifiées. Cependant, cela peut s'avérer fastidieux lorsque vous souhaitez simplement ajuster les colonnes sans affecter les vues.
Solution permanente : utilisation de types de données illimités
Pour éviter complètement ce problème, utilisez des données des types comme text ou varchar/caractère variant sans spécificateur de longueur. Ces types permettent un stockage de données sans restriction, éliminant ainsi le besoin de modifications de longueur nécessitant une recréation de vue.
Application de la longueur maximale avec une contrainte CHECK
Si vous avez besoin d'une application de longueur maximale, pensez à utiliser une contrainte CHECK :
ALTER TABLE monkey ADD CONSTRAINT monkey_name_len CHECK (length(name) < 101);
Cette contrainte peut être modifiée ou supprimée indépendamment, sans impacter les vues ni forcer les données inutiles modifications dans la table sous-jacente.
Impact de l'implémentation des vues
Contrairement à la croyance populaire, les vues dans PostgreSQL ne sont pas de simples alias mais des tables spéciales avec des règles définissant leur contenu. Ces règles, appliquées par les instructions ON SELECT, garantissent que toute modification apportée aux objets sous-jacents doit être reflétée dans les vues dépendantes.
Les limitations d'ALTER VIEW
ALTER VIEW peuvent modifiez uniquement les attributs auxiliaires des vues, tels que les autorisations ou les commentaires. Pour modifier la requête sous-jacente, utilisez CREATE OR REPLACE VIEW. Cependant, cette méthode ne convient pas lors de la modification des types de données des colonnes résultantes.
Suppression et recréation de vues
Dans de tels cas, l'approche préférée consiste à SUPPRIMER la vue existante. et CRÉEZ-en un nouveau. Cela préserve les données sous-jacentes mais élimine tous les attributs personnalisés associés à la vue.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!