MySQL вставка с внешним ключом - PullRequest
1 голос
/ 26 июля 2011

У меня есть поле формы, которое включает в себя значения, которые будут помещены в разные таблицы в MySQL.

все они связаны с внешними ключами.

как поместить эти значения в разные таблицы.

псевдотаблицы:

users_table:
userId|userlogin

user_info:
info_id|userId|name|surname

user_contact:
contact_id|userId|phone|email


form includes:
userlogin
name
surname
phone
email

в своем исследовании я обнаружил, что могу использовать mysql_insert_id для связи с FK, но мне интересно, может ли это вызвать проблемы, если на сайте высокая нагрузка (разные запросы отправляются одновременно)

Я также узнал, что могу установить триггеры для создания новых значений fk:

CREATE TRIGGER ins_kimlik AFTER INSERT ON hastalar
for each row
insert into hasta_kimlik set idhasta = new.idhasta

но я не знаю, как добавить к ним данные. я могу использовать
UPDATE table SET (name, surname) VALUES ('John', 'Brown') WHERE info_id = LAST_INSERT_ID();

но это не похоже на родной путь.

что такое лучшая практика?

Ответы [ 2 ]

1 голос
/ 26 июля 2011

Я обнаружил, что могу использовать mysql_insert_id для связи с FK, но мне интересно, может ли это вызвать проблемы при высокой загрузке сайта (разные запросы отправляются одновременно).

mysql_insert_id возвращает последнее значение автоинкремента, сгенерированное подключением к базе данных, используемым в данный момент .

Не имеет значения, что другие процессы делают с другими подключениями.Это безопасно.Вы получите правильное значение.

, но это не похоже на родной путь.

Нет.Правильный путь:

  • ВСТАВИТЬ пользователя
  • получить идентификатор
  • ВСТАВИТЬ user_info
1 голос
/ 26 июля 2011

Если таблицы связаны внешними ключами, вы не должны просто начать с базовой таблицы (здесь user_table), а затем добавить либо таблицу user_info, а затем таблицу user_contact, либо наоборот.Пока вы заполнили таблицу с первичным ключом fk в других таблицах, вы можете легко добавлять.

  • ВСТАВИТЬ SQL-команду:

ВСТАВИТЬ INTO table_name (column1, column2, column3, ...) ЗНАЧЕНИЯ (значение1, значение2, value3, ...)

Это то, что вы спрашивали?

...