Я создаю собственную таблицу:
Таблица Item
столбцы:
ItemId int - PK;
Сумма денег - не ноль;
Цена денег - вычисляемый столбец с использованием UDF, который получает значение в соответствии с суммой предков предметов.
ParentItemId int - nullable, ссылка на другой ItemId в этой таблице.
Мне нужно избегать петли, то есть брат не может стать предком своих предков, то есть если ItemId = 2 ParentItemId = 1, то ItemId 1 ParentItemId = 2 не должен быть разрешен.
Я не знаю, какой должна быть лучшая практика в этой ситуации.
Я думаю, что мне следует добавить CK, который получает скалярное значение из UDF или чего-либо еще.
EDIT:
Другой вариант - создать триггер INSTEAD OF и ввести в 1 транзакцию обновление поля ParentItemId и выбрать поле «Цена» в @@ RowIdentity, если не удалось отменить транзакцию, но я бы предпочел проверку UDF.
Любые идеи искренне приветствуются.