Wie kann ich einen Primärschlüssel in einer ANSICHT ein Schlüssel, der nicht davon abhängig, Quell-Tabellen)
Ich bin erstellen einer ANSICHT aus 3 TABELLEN. Jede TABELLE hat Ihren Primärschlüssel. Jedoch in der ANSICHT, um einen Primärschlüssel haben, werde ich einen zusammengesetzten Primärschlüssel (Kombination der Primärschlüssel der 3 TABELLEN).
Ich würde aber gerne eine Spalte hinzufügen in der ANSICHT als einen primären Schlüssel, der erstellt wird, nur für den Zweck der ANSICHT. Als Teil der VIEW-definition, es sollte EINDEUTIG sein(autoincrement da wäre es meistens INT). Wie kann ich das erreichen?
Ich bin mit MySQL 5.1
InformationsquelleAutor Kabeer | 2009-12-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
könnten Sie wenden verschiedene Methoden an, legen Sie eine eindeutige ID für die Ansicht von Daten, wie zum Beispiel:
Dies ist jedoch nicht eine primary key, es ist nicht beständig und wird sich ändern, wenn sich die Daten ändern.
Was genau brauchen Sie einen Schlüssel für?
paul, wenn Sie das anwenden auf einen Blick, zum Beispiel, wird es nicht unbedingt geben, Sie
id
in Ordnung. es gibt Ihnen eine eindeutige Kennung, aber nicht in Ordnung. eine Recht einfache Lösung ist das erstellen einer temporären Tabelle (über einfügen aus einer Sicht, zum Beispiel), hat ein AutoWert-Feld. es würde Sie zwingen, neu zu erstellen die Tabelle jedes mal, wenn sich Ihre Daten geändert haben, aber das könnte leicht geschafft, in php oder java.Als David Clifton gesagt, Sie können nicht erstellen Sie eine Ansicht mit
SELECT @rownum:=@rownum+1 as id, mytable.* FROM (SELECT @rownum:=0) r, mytable;
erhalten Sie eine1351
FehlerInformationsquelleAutor Paul Creasey
Den höchsten gestimmt, die Antwort, die die Verwendung
Ist falsch - Sie können nicht erstellen Sie ein view in mysql verwendet ein sub-select in der FROM. Sie sind die einzige option ist, um zu behandeln eine Reihe von Spalten als einen zusammengesetzten Schlüssel.
Sie können auch Variablen verwenden, die in ein auswählen, wird eine Ansicht erstellt. Vereinbart, die Lösung ist ein zusammengesetzter Schlüssel.
InformationsquelleAutor David Clifton
Ansichten nicht primär-Schlüssel und Indizes - die mysql-engine verwenden, die Indizes und Schlüssel definiert, die sich auf die Basis-Tabelle(N).
InformationsquelleAutor mopoke
Blick ist nur eine gespeicherte sub-Abfrage. Die Idee, ein PK, ist irrelevant.
...es sei denn, Sie benötigen eine indizierte Sicht verwendet, in diesem Fall benötigen Sie einen Gruppierten Index für die Sicht (aber noch nicht unbedingt einen Primärschlüssel)
(obwohl, ich Rede SQL Server... ich bin mir nicht sicher, wie dies zu MySQL)
InformationsquelleAutor Rob Farley