sql >> Base de Datos >  >> RDS >> Oracle

crear una tabla con select union no tiene restricciones

Usando select ... as ... para crear una tabla nunca copias de restricciones. Si desea que la nueva tabla herede las restricciones de las tablas originales, debe crear las nuevas restricciones manualmente.

Como señala @Davek, not null las restricciones se copiarán de una sola tabla select ... as ... . Me imagino que es porque son atributos de columna y restricciones. Sin embargo, una vez que la columna tiene más de una fuente, es razonable que Oracle no intente aplicar esa restricción.

En respuesta a la pregunta de seguimiento "¿sería posible dar tableC las mismas restricciones de tableA o tableB , después de un CTA?":

Por supuesto que es posible, pero no hay un solo comando para hacerlo. Podría escribir un procedimiento que usara SQL dinámico para copiar las restricciones. Sin embargo, a menos que esté buscando automatizar este comportamiento, generalmente será más fácil extraer el DDL usando un IDE y cambiar el nombre de la tabla.