sql >> Databasteknik >  >> RDS >> Oracle

Hur kan jag villkorligt konstruera ett tabellnamn för en SQL CREATE TABLE-sats?

I Oracle skulle syntaxen vara ungefär som

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

Men detta är förmodligen en riktigt dålig idé. Sex månader senare vill du lägga till en kolumn i tabellen och du måste räkna ut vilka tabeller du behöver lägga till den i.

Dessutom behöver lagrade procedurer i Oracle ett fast tabellnamn (för en befintlig tabell) eller så måste du referera till allt genom dynamisk SQL vilket är jobbigt.

Bättre att ha en enskild kundtabell med företagets_id som attribut. Använd sedan finkornig åtkomstkontroll för att säkert filtrera på company_id för att kontrollera vem som ser vad företagets data.



  1. Laravel Homestead Vagrant Box-databasproblem

  2. Hur man sträng-jämföra för ett enda utrymme

  3. Hur får man distinkt post från mysql-tabellen?

  4. Hur man hittar Top Losers för 1 dag, 1 månad baserat på historiska data