2017-02-20 4 views
-5

Ich habe 3 Tabellen sind sie
1. Benutzer {id, name, mobilen}
2. Temp_User {id, name, mobiler}
3. In_Out { id, Intime, outtime}
Wie beziehen 2 Spalten aus einer einzigen Spalte in mysql

Jetzt möchte ich id in In_Out als Fremdschlüssel machen und es sollte User.id sowie Temp_User.id beziehen. Das heißt, der id Wert muss entweder in User oder in Temp_User vorhanden sein.

Ist es in mysql möglich? Wenn jemand weiß, bitte geben Sie mir den ALTER Befehl für die In_Out Tabelle. Ich habe den Tisch bereits erstellt. Jede Hilfe wird geschätzt.

+0

Dies ist eine Frage Google für Variationen Ihres Titels. – philipxy

+0

Danke @philipxy –

+0

Gestern war der letzte FK Beitrag, den ich gesehen habe, dieses Duplikat. Am Tag zuvor war auch der vorherige FK Post, den ich gesehen habe. Ein Teil meines Kommentars war "Der allgemeine Fall von" gemeinsamen Feldern, die von mehreren Tabellen verwendet werden "ist Subtyping/Vererbung/Polymorphie in Datenbanken/SQL und wird auch in Fragen über mehrere/viele/zwei FKs/Referenzen/Beziehungen/Links zu mehreren gefragt/Viele/zwei Tabellen. (Aber FKs sind normalerweise nicht die Einschränkungen in dieser Design-Variante, was wahrscheinlich mit dem zusammenhängt, auf das Sie hinweisen.) Im Grunde ist der Supertyp etwas mit diesen Feldern. " – philipxy

Antwort

2

Betrachten sie einen Flag an die Benutzertabelle hinzufügen, die der Benutzer anzeigt, wenn ein temporärer Benutzer ist oder nicht:

alter table user add is_temp tinyint unsigned default 0 not null; 

Dadurch wird einen einfachen Fremdschlüsselverweis von In_Out erlauben:

alter table In_Out 
    change id User_id <Match Data Type And Nullness Here>, 
    add constraint User_id_fk foreign key (User_id) references User(id); 
Verwandte Themen