Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос по составлению триггера  [new]
Тимофей289
Member

Откуда:
Сообщений: 5
Друзья есть вопрос. не знаю как и придумать правильно запрос этот!

есть таблицы
1) t1 поля id, num
2) t2 поля id, num
3) t3 поля id, num

нужно составить триггер при обновлении таблицы t1(или t2) поле в таблице t3 заполнилось суммой полей num из t1 and t2

пример
t1
id num
1 4
2 5
3 6

t2
id num
1 5
2 6
3 7

обновили любую таблицу и сработал триггер получилась таблица t3
t3
id num
1 9
2 11
3 13
30 мар 15, 22:46    [17452220]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по составлению триггера  [new]
Тимофей289
Member

Откуда:
Сообщений: 5
t3 должно будет обновляться!!(update)
30 мар 15, 22:47    [17452227]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по составлению триггера  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Может, как-то так
CREATE TRIGGER t1OnUpdate
    ON  t1
    FOR INSERT, UPDATE
    AS
    BEGIN

    UPDATE t3
    SET num = t2.num + t3.num
    FROM t3 INNER JOIN t2 ON t2.id = t3.id
    INNER JOIN t1 ON t1.id = t2.id
    WHERE t3.id IN (SELECT id FROM inserted)
    
    END
31 мар 15, 09:24    [17452840]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по составлению триггера  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Или как-то так.
CREATE TRIGGER t1OnUpdate
    ON  t1
FOR INSERT, UPDATE
AS
BEGIN

MERGE t3
USING (SELECT ISNULL(t1.id, t2.id), ISNULL(t2.num, 0) + ISNULL(t2.num, 0) FROM t2 
        FULL OUTER JOIN t1 ON t1.id = t2.id
	      WHERE ISNULL(t1.id, t2.id) IN (SELECT id FROM inserted)) AS t4(id, num) 
		ON t3.id = t0.id
WHEN MATCHED
THEN UPDATE
    SET num = t4.num
WHEN NOT MATCHED BY TARGET
    THEN
    INSERT(id, num)
    VALUES(t4.id, t4.num)
WHEN NOT MATCHED BY SOURCE
    THEN
    DELETE;

END
31 мар 15, 10:30    [17453109]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по составлению триггера  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Хотя, извиняюсь,
WHEN NOT MATCHED BY SOURCE
THEN
DELETE;

лишнее.
31 мар 15, 10:32    [17453119]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по составлению триггера  [new]
Тимофей289
Member

Откуда:
Сообщений: 5
Jovanny,

первая вроде как работает)) спасибо огромное а то совсем не лезло в голову что да как)
31 мар 15, 12:11    [17453634]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить