sql >> Database >  >> RDS >> Oracle

Hoe kan ik voorwaardelijk een tabelnaam construeren voor een SQL CREATE TABLE-instructie?

In Oracle zou de syntaxis zoiets zijn als

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

Maar dit is waarschijnlijk een heel slecht idee. Zes maanden later wil je een kolom aan de tabel toevoegen en moet je uitzoeken aan welke tabellen je deze moet toevoegen.

Ook hebben opgeslagen procedures in Oracle een vaste tabelnaam (van een bestaande tabel) nodig, anders moet je naar alles verwijzen via dynamische SQL, wat lastig is.

Het is beter om een ​​enkele klantentabel te hebben met de company_id als attribuut. Gebruik dan Fijnkorrelige toegangscontrole om veilig te filteren op de company_id om te bepalen wie welke bedrijfsgegevens kan zien.



  1. Sql Server deterministische door de gebruiker gedefinieerde functie

  2. Automatisch verhogen in orakel naar reeds gemaakte tabel

  3. Hoe vind ik een uitgeschakelde index op SQL server 2008

  4. Wat doet de methode Statement.setFetchSize(nSize) echt in het SQL Server JDBC-stuurprogramma?