Скопировать строку и все ее «дети» - PullRequest
3 голосов
/ 20 июля 2011

У меня есть таблица MySQL с именем employees.Есть еще одна таблица с именем shifts, которая связана с employees столбцом employeeId и отношением «один ко многим».Я хочу клонировать сотрудника и его смены, используя INSERT, поэтому строка employee клонируется, а все shifts клонируются и имеют новый автоинкрементный первичный ключ, созданный для нового employee.Возможно ли это в одном запросе?

Ответы [ 2 ]

5 голосов
/ 20 июля 2011

Да, но не с одной вставкой.

У вас будет одна ВСТАВКА, чтобы сделать сотрудника, затем вторая ВСТАВКА с суб-ВЫБРАТЬ, чтобы ВЫБРАТЬ все данные смены.

Вот несколько примеров

2 голосов
/ 21 июля 2011

Если вы хотите сделать это много раз или хотите сделать это на массовом уровне, создайте sp, который вставляет запись дублирования для сотрудника, а затем вставляет записи дублирования для всех его смен.

Что-то вроде:

CREATE PROCEDURE sp_cloneEmployee
@employeeId int
AS
INSERT INTO employees
SELECT * FROM employees
WHERE employeeId = @employeeId;

INSERT INTO shifts
SELECT * FROM shifts 
WHERE employeeId = @employeeId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...