Хорошо, это не проверено и делает некоторые предположения. Первое предположение состоит в том, что идентификаторы являются целыми числами и что releaseid никогда не будет 0. Следующее предположение - это projectid - это PK таблицы. Последнее предположение состоит в том, что вы можете сообщить родительскому проекту, потому что парентида равна нулю.
Теперь единственный правильный способ сделать это - триггер. Таким образом, это всегда будет правильно, независимо от того, как изменяются данные. Нет другого абсолютно надежного способа обеспечить синхронизацию данных. Триггеры должны быть написаны для обработки нескольких записей. Этот триггер является приблизительным приближением и не тестируется. Обязательно тщательно протестируйте триггер (включая тестирование нескольких вставок rcord и обновления нескольких записей) перед его использованием.
create trigger testtrigger on mytable
for insert, update
as
select inserted.projectid as parentid, inserted.releaseid as newreleaseid
into #changedparentreleaseid
from inserted i
join deleted d
on i.projectid = d.projectid
where i.parentid is null
and isnull(d.releaseid,0) <> isnull(i.releaseid,0)
update m
set releaseid = c.newreleaseid
from mytable m
join #changedparentreleaseid c
on c.parentid = m.parentid