«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как вставить данные в таблицы MySQL с ограничениями внешнего ключа?

Как вставить данные в таблицы MySQL с ограничениями внешнего ключа?

Опубликовано 22 декабря 2024 г.
Просматривать:435

How to Insert Data into MySQL Tables with Foreign Key Constraints?

Вставка данных в таблицы с ограничениями внешнего ключа в MySQL

Таблицы, включающие отношения внешнего ключа, требуют особого внимания при вставке данных, чтобы гарантировать целостность данных. Давайте рассмотрим, как обрабатывать вставки в MySQL для двух сценариев:

Случай 1: вставка ученика с уже существующим учителем

Если у вас есть запись ученика для вставки и учитель, которому она принадлежит уже существует, вы можете использовать подзапрос для получения внешнего ключа (id_teacher) на основе имени учителя:

INSERT INTO TAB_STUDENT(name_student, id_teacher_fk)
SELECT 'Joe The Student', id_teacher
  FROM TAB_TEACHER
 WHERE name_teacher = 'Professor Jack'
 LIMIT 1

Случай 2: добавление учащегося к новому учителю

Если учитель учащегося еще не существует в базе данных, вам необходимо выполнить две отдельные операции вставки:

  1. Вставьте новую запись об учителе в таблицу TAB_TEACHER:
INSERT INTO TAB_TEACHER(name_teacher)
VALUES ('Dr. Smith')
  1. Использовать идентификатор вновь созданного учителя (id_teacher) в качестве внешнего ключа при вставке ученика:
INSERT INTO TAB_STUDENT(name_student, id_teacher_fk)
VALUES ('Mary The Student', LAST_INSERT_ID())
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3