Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann ich einen Tabellennamen für eine SQL CREATE TABLE-Anweisung bedingt konstruieren?

In Oracle wäre die Syntax so etwas wie

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

Dies ist jedoch wahrscheinlich eine wirklich schlechte Idee. Sechs Monate später werden Sie der Tabelle eine Spalte hinzufügen wollen, und Sie müssen herausfinden, zu welchen Tabellen Sie sie hinzufügen müssen.

Außerdem benötigen gespeicherte Prozeduren in Oracle einen festen Tabellennamen (einer vorhandenen Tabelle), oder Sie müssten alles über dynamisches SQL referenzieren, was mühsam ist.

Es ist besser, eine einzelne Kundentabelle mit der company_id als Attribut zu haben. Verwenden Sie dann Fine Grained Access Control um sicher nach der company_id zu filtern, um zu kontrollieren, wer welche Unternehmensdaten sieht.