Я хотел бы иметь возможность клонировать запись и ее потомков в одной таблице.Примером моей таблицы может быть следующий:
Table1
id | parentid | name
---------------------
1 | 0 | 'Food'
2 | 1 | 'Taste'
3 | 1 | 'Price'
4 | 2 | 'Taste Requirements'
Столбец «id» - это первичный ключ и автоинкременты.Запись «Еда» (т. Е. Где id = 1) содержит две записи: «Вкус» и «Цена».Запись «Вкус» содержит запись под названием «Требования к вкусу».Я хотел бы иметь возможность клонировать запись «Food», чтобы таблица Table1 выглядела следующим образом:
Table1
id | parentid | name
---------------------
1 | 0 | 'Food'
2 | 1 | 'Taste'
3 | 1 | 'Price'
4 | 2 | 'Taste Requirements'
5 | 0 | 'Cookies'
6 | 5 | 'Taste'
7 | 5 | 'Price'
8 | 6 | 'Taste Requirements'
(где «Cookies» - это название новой категориичто я хочу создать).Я могу выбрать всех потомков 'Food', используя:
with Table1_CTE( id, parentid, name )
as
(
select t.id, t.parentid, t.name from Table1 t
where t.id = 1
union all
select t.id, t.parentid,t. name from Table1 t
inner join Table1_CTE as tc
on t.parentid = tc.id
)
select id, parentid, name from Table1_CTE
, и я могу клонировать только запись 'Food' (т.е. где id = 1), используя:
insert into Table1 ( parentid, name )
select ( parentid, 'Cookies' )
from Table1 where id = 1
но у меня возникают проблемы при попытке объединить два запроса для клонирования потомков 'Food'.Кроме того, я стараюсь избегать использования хранимых процедур, триггеров, curosrs и т. Д. Возможно ли то, что я пытаюсь сделать?Я видел некоторые примеры в Интернете, но не смог применить их к моим требованиям.