Извиняюсь за глупые вопросы, но всё-таки...
Есть таблица duscus c FK theme, таблица theme с FK forum и соответственно таблица forum.
Для таблиц theme и forum установлено ON DELETE CASCADE.
На таблицу discus надо повесить триггер, управляющий счетчиком в theme и в forum подсчитывающим число ссылок на соответствующую запись. Если удалять по одной записи из discus, то проблем не возникает, но при удалении например записи из theme начинаются проблемы во-первых с определением величины на которую надо изменить счетчик, во-вторых с определением id записи в forum счетчик которой надо модифицировать....
Впринципе в theme подсчет правильный, а с forum посложнее....
Код типа этого (опять-таки извиняюсь за корявость):
CREATE TRIGGER del_discus ON [dbo].[discus]
AFTER DELETE
AS
BEGIN
DECLARE @t table(theme INT,cnt INT)
INSERT INTO @t(theme,cnt) SELECT [theme],count(*) AS cnt FROM deleted GROUP BY [theme]
UPDATE themes SET [count]=[count]-(SELECT count(*) from deleted) FROM @t WHERE [id]=[theme]
END
|
|