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

¿Cómo puedo construir condicionalmente un nombre de tabla para una instrucción SQL CREATE TABLE?

En Oracle, la sintaxis sería algo como

BEGIN
  EXECUTE IMMEDIATE 'CREATE TABLE CUSTOMER_'||v_company_id||' (..)';
END;

Sin embargo, esta es probablemente una muy mala idea. Seis meses después, querrá agregar una columna a la tabla y deberá determinar a qué tablas necesita agregarla.

Además, los procedimientos almacenados en Oracle necesitan un nombre de tabla fijo (de una tabla existente) o tendría que hacer referencia a todo a través de SQL dinámico, lo cual es una molestia.

Es mejor tener una sola tabla de clientes con company_id como atributo. Luego use Control de acceso detallado para filtrar de forma segura en company_id para controlar quién ve los datos de qué empresa.