Oracle
 sql >> Base de données >  >> RDS >> Oracle

créer une table avec select union n'a pas de contraintes

Utilisation de select ... as ... pour créer une table jamais copie les contraintes. Si vous souhaitez que la nouvelle table hérite des contraintes des tables d'origine, vous devez créer les nouvelles contraintes manuellement.

Comme le souligne @Davek, not null les contraintes seront copiées à partir d'une seule table select ... as ... . J'imagine que c'est parce qu'ils sont à la fois des attributs de colonne et des contraintes. Cependant, une fois que la colonne a plus d'une source, il est raisonnable qu'Oracle n'essaie pas d'appliquer cette contrainte.

En réponse à la question de suivi "serait-il possible de donner tableC les mêmes contraintes soit depuis tableA ou tableB , après un CTA ?" :

Bien sûr, c'est possible, mais il n'y a pas de commande unique pour le faire. Vous pouvez écrire une procédure utilisant SQL dynamique pour copier les contraintes. Cependant, à moins que vous ne cherchiez à automatiser ce comportement, il sera généralement plus facile d'extraire le DDL à l'aide d'un IDE et de modifier le nom de la table.