2016-03-18 3 views
0

Я пытаюсь создать приложение для бронирования на Android. У меня есть база данных mysql, к которой я подключаюсь.SQL - обновление обеих таблиц при регистрации пользователя

В настоящее время у меня есть две таблицы - Customer Details и Customer login с p_ID в качестве логина primary key и тот же p_ID, являющимся foriegn key в таблице деталей. Это значение устанавливается на автоматическое увеличение каждый раз, когда у кого-то новые регистры. Однако я не понимаю, как связать их вместе. Поскольку они уникальны и автоматически увеличиваются, я не вижу способа связывать их, не заполняя их вручную.

так что мой вопрос: я делаю это совершенно неправильно? Должен ли я вручную устанавливать идентификаторы? Каков правильный способ привязки таблицы входа к общей информации о клиенте, например, когда пользователь регистрируется, как добавить к обеим таблицам, сохраняя соответствующий идентификатор?

Например:

login стол:

P_ID (PK) | username | password 
------------------------------- 
1   | me  | me123 

details стол:

name | age | location | P_ID (FK) 
--------------------------------- 
john | 40 | UK  | 1 

ответ

1

Ваша структура БД в порядке, но вы не можете вставить данные в обеих таблицах с одного запроса SQL. Вместо этого, вы можете использовать транзакцию вместе с LAST_INSERT_ID() функции:

BEGIN; 
    INSERT INTO login (`username`, `password`) 
     VALUES('me', 'me123'); 
    INSERT INTO datails (`P_ID`, `name`, `age`, `location`) 
     VALUES(LAST_INSERT_ID(), 'john', '40', 'UK'); 
COMMIT; 

Поскольку ваш основной идентификатор autoincremental в вашей login таблице, вам не нужно заботиться об этом вообще с таким подходом. Внешний ключ в таблице details не должен быть автоинкрементным, а просто нормальным целым числом.

+0

Работал блестяще, спасибо – compsci94

Смежные вопросы