2017-02-20 18 views
-5

У меня есть 3 таблицы они
1. Пользователь {идентификатор, имя, мобильный}
2. Temp_User {идентификатор, имя, мобильный}
3. IN_OUT { идентификатор, интимный, outtime}
Как сослаться на 2 колонки из одного столбца в MySQL

Теперь я хочу, чтобы id в In_Out в качестве внешнего ключа, и он должен обратиться User.id, а также Temp_User.id. То есть значение id должно присутствовать либо в User, либо в Temp_User.

Возможно ли это в mysql? Если кто-нибудь знает, пожалуйста, дайте мне команду ALTER для столовой таблицы In_Out. Я уже создал таблицу. Любая помощь приветствуется.

+0

Это a faq. Google для вариантов вашего названия. – philipxy

+0

Спасибо @philipxy –

+0

Вчера, последний столк FK, который я видел, был этот дубликат. Накануне предыдущий пост FK я видел, также был. Часть моего комментария была «Общий случай« общих полей, используемых несколькими таблицами »- это подтипирование/наследование/полиморфизм в базах данных/SQL, а также задание вопросов в отношении нескольких/много/двух FKs/ссылок/отношений/ссылок на несколько/many/two tables. (Но FK обычно не являются ограничениями в этом варианте дизайна, что, вероятно, связано с тем, что вы указываете.) По сути, супертип - это вещи, имеющие эти поля ». – philipxy

ответ

2

Рассмотрим добавление флага к столу пользователя, который указывает, является ли пользователь временный пользователь или нет:

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

Это позволит простой внешний ключ ссылки из IN_OUT:

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);