2017-11-29 3 views
1

Ich weiß, es ist ungewöhnlich, aber kann ich zwei Tabellen mit dem gleichen Namen in Oracle haben?Wie erstellt man eine Tabelle mit demselben Namen in Oracle?

Ich dachte über Tablespace nach, indem ich zwei verschiedene Tablespaces erstellte und dann die Tabelle mit dem gleichen Namen in diesen Tablespaces erstellte. Aber es funktioniert nicht.

Gibt es eine Möglichkeit, es zu tun?

Eigentlich erstelle ich REST API mit Oracle als Datenbank.

Ich habe Stammdaten. Wenn ein API-Aufruf durchgeführt wird, wird die Ausführung von Operationen an den Daten aus den Master-Tabellen ausgeführt, die einige Tabellensätze erzeugen. Verschiedene Benutzer können verschiedene Operationen wie Sum, Durchschnitt, Union usw. mit verschiedenen Datensätzen aus der Master-Tabelle verwenden.

Jetzt, wenn mehrere Benutzer die gleiche API aufrufen, dann würde es einen Konflikt von Tabellennamen geben, wenn ich die Tabelle mit dem gleichen Namen erstelle.

Ich weiß, ich kann USER_ID verwenden oder ein Zeitstempel in Tabellenname sein, so dass Tabellenname eindeutig identifiziert werden.

Aber ich suchte nach einer alternativen Lösung, um einen sauberen Tabellennamen zu haben, ohne ihn mit USER_ID oder Timestamp zu verschmutzen.

+0

Warum? Dies ist aus gutem Grund nicht möglich. – Lunc

+0

* "die Ausführung von Operationen an den Daten aus den Master-Tabellen, die einige Tabellen erzeugt" * Dies klingt wie eine sehr schlechte Architektur. Ohne zu wissen, warum Sie versuchen, dieses Design zu implementieren, können wir Ihnen nicht helfen. Du musst also erklären, warum du denkst, dass du das tun musst. – APC

+0

Obwohl, wenn ich raten musste, Sie versuchen, temporäre Datensätze für die Berichterstattung zu erstellen, weil jemand denkt, dass mehr (fürchten Wort) "skalierbar" als das Schreiben ein paar gut abgestimmten Abfragen ist. – APC

Antwort

0

Tabellennamen sind für jeden Benutzer eindeutig. Sie können zwei Benutzer erstellen und sie haben jeweils dieselbe Tabelle.

+0

Die zugrunde liegende Anforderung des OP ist unklar. Sie denken, dass sie ** mehrere Instanzen desselben Tabellennamens generieren müssen, aber das tun sie mit ziemlicher Sicherheit nicht. Wie auch immer, ich werde nicht mehrere Schemas lösen ihr Problem. – APC

0

Warum möchten Sie das tun?

Sie können dies nur tun, indem Sie zwei Tabellen mit demselben Namen in verschiedenen Schemas erstellen.

wie wenn Sie user1 haben und Benutzer2 Sie tun können:

create table user1.tablename(col Type ...) 

create table user2.tablename(col Type ...) 

aber Sie sollten auch haben Berechtigungstabellen auf diese beiden Schemata zu erstellen.

+0

Die zugrunde liegende Anforderung des OP ist unklar. Sie denken, dass sie ** mehrere Instanzen desselben Tabellennamens generieren müssen, aber das tun sie mit ziemlicher Sicherheit nicht. Wie auch immer, ich werde nicht mehrere Schemas lösen ihr Problem. – APC

-1

Wie vorherige Antwort sagte, Tabellennamen sind eindeutig pro Benutzer/Schema. Wie würdest du den Tisch benutzen, wenn nicht? Sie können jedoch ziemlich nahe kommen. Normalerweise unterscheidet Oracle nicht zwischen Groß- und Kleinschreibung, daher beziehen sich USERS, Benutzer und Benutzer auf dieselbe Tabelle. Das ändert sich mit doppelten Anführungszeichen, also sind "BENUTZER", "Benutzer" und "Benutzer" drei Tabellen! Vielleicht können Sie das ausnutzen, wenn Sie eine wirklich seltsame Anforderung haben?

Dies ist übrigens nicht zu empfehlen. Ich habe es (aus Versehen) gesehen und Junge verursacht Bugs!

+0

Dies ist ein schlechter Ratschlag. Bitte folge ihm nicht. – APC

+0

Ich stimme zu, dass es schlecht ist, aber ich denke, ich war mir darüber im Nachhinein ziemlich klar, also warum die Abstimmung runter? Die Frage war, ob es möglich war und ich den Grenzfall zeigen wollte. Wenn es nichts anderes ist, kann es jemandem helfen, diesen Fehler zu vermeiden. – user2612030

+0

** (1) ** Schlechte Ratschläge bleiben auch mit Vorbehalten schlecht. ** (2) ** Es geht nicht um die Frage des OP, weil sie sagen, dass sie wissen, dass sie Tabellen mit eindeutigen Suffixen erstellen können (was eine bessere Lösung wäre als "USERS", "User" usw.) und sie will das nicht machen. ** (3) ** Ich denke, das ist ein [XY-Problem] (https://meta.stackexchange.com/a/66378/133829) und was wir tun sollten, ist das wirkliche Problem des OP zu lösen, es nicht zu helfen Zerstöre ihr Datenmodell. – APC

Verwandte Themen