Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como posso construir condicionalmente um nome de tabela para uma instrução SQL CREATE TABLE?


No Oracle a sintaxe seria algo como
BEGIN
  EXECUTE IMMEDIATE 'CREATE TABLE CUSTOMER_'||v_company_id||' (..)';
END;

No entanto, esta é provavelmente uma idéia muito ruim. Seis meses depois, você desejará adicionar uma coluna à tabela e precisará descobrir em quais tabelas precisa adicioná-la.

Além disso, os procedimentos armazenados no Oracle precisam de um nome de tabela fixo (de uma tabela existente) ou você teria que fazer referência a tudo por meio de SQL dinâmico, o que é uma dor.

Melhor ter uma única tabela de clientes com o company_id como atributo. Em seguida, use o Controle de acesso refinado para filtrar com segurança o company_id para controlar quem vê quais dados da empresa.