powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как изменить данные во всех потомках в таблице, завязанной на себя же ??
4 сообщений из 4, страница 1 из 1
Как изменить данные во всех потомках в таблице, завязанной на себя же ??
    #32032301
Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Den
Гость
Есть некая таблица :
tab1( id, name, flag, parentid)
parentid завязан на эту же таблицу на id.

Нужно :
При изменении в одной записи поля flag, менять это поле и во всех её потомках.

Как это сделать более грамотно и эффективно ???
...
Рейтинг: 0 / 0
Как изменить данные во всех потомках в таблице, завязанной на себя же ??
    #32032461
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если потомков немного - можно триггерами сделать. Только вложенность триггеров может доходить до 32 уровня (кажется).

другой вариант - построить в #tmp путь id->parent->parent...
а после этого все меняется одним запросом update...
...
Рейтинг: 0 / 0
Как изменить данные во всех потомках в таблице, завязанной на себя же ??
    #32032465
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Специально для Вас привожу функцию выбирающую дерево:
CREATE FUNCTION F_SELECT_ALL_CONST_NODES(@startid int)
RETURNS @tmp table (id int, parent int, code varchar(20), lev int) AS
BEGIN
declare @i int set @i = 0
insert into @tmp select id, parentid, code, 0 from const where id = @startid
while @@rowcount > 0 begin
set @i = @i + 1
insert into @tmp select o.id, o.parentid, o.code, @i from const o inner join @tmp t on t.lev = @i - 1 and o.parentid = t.id
order by lev, o.id
end
return
END
далее
update Table set field = value
...
Рейтинг: 0 / 0
Как изменить данные во всех потомках в таблице, завязанной на себя же ??
    #32032466
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
where id in (select id from моя_функция)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как изменить данные во всех потомках в таблице, завязанной на себя же ??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]