У меня есть таблица, которую я буду использовать для подсчета. Внутри этой таблицы у меня есть следующие столбцы: T_ID, L_ID, L1, L2, L3, L4, L5. L_ID имеет тип данных INT. Значение в L_ID может увеличиться до 5. Я хочу создать триггер, который проверяет значение в L_ID, в зависимости от этого значения, будет ли оно от 1 до 5. Оно увеличит соответствующий столбец L1, L2, L3, L4, L5 , эти значения автоматически равны нулю. Например, L_ID = 3, поэтому L3 будет увеличиваться на единицу.Как увеличить отдельный столбец на основе значения в другом столбце в той же таблице
2
A
ответ
0
Итак, вы можете сделать это с помощью выражений case и вместо триггеров вставки/обновления вместо вместо вставки для исходной вставки (если вы хотите, чтобы это поведение было на исходной вставке, а не только на все столбцы Lx в 0:
CREATE TRIGGER [dbo].[InsteadTrigger] ON [dbo].[original_table]
INSTEAD OF INSERT
AS
INSERT INTO original_table
SELECT L_ID ,
CASE WHEN L_ID = 1 THEN L1 + 1
ELSE L1
END ,
CASE WHEN L_ID = 2 THEN L2 + 1
ELSE L2
END ,
CASE WHEN L_ID = 3 THEN L3 + 1
ELSE L3
END ,
CASE WHEN L_ID = 4 THEN L4 + 1
ELSE L4
END ,
CASE WHEN L_ID = 5 THEN L5 + 1
ELSE L5
END
FROM INSERTED;
GO
Затем, чтобы получить обновления на работу, вам нужно будет вместо триггера обновления, таких как это:
CREATE TRIGGER InsteadUpdTrigger ON original_table
INSTEAD OF UPDATE
AS
UPDATE original_table
SET L_ID = i.L_ID ,
L1 = CASE WHEN i.L_ID = 1 THEN i.L1 + 1
ELSE i.L1
END ,
L2 = CASE WHEN i.L_ID = 2 THEN i.L2 + 1
ELSE i.L2
END ,
L3 = CASE WHEN i.L_ID = 3 THEN i.L3 + 1
ELSE i.L3
END ,
L4 = CASE WHEN i.L_ID = 4 THEN i.L4 + 1
ELSE i.L4
END ,
L5 = CASE WHEN i.L_ID = 5 THEN i.L5 + 1
ELSE i.L5
END
FROM INSERTED i
WHERE original_table.T_ID = i.T_ID;
Просто примечание, что я предположил, что T_ID здесь является первичным ключом, который требуется в этом случае, чтобы убедиться, что только триггер обновления изменяет строки, участвующие в первоначальном обновлении.
Смежные вопросы
- 1. Отдельный столбец на основе условия в той же таблице в SQL
- 2. Столбец Hibernate в таблице, чтобы указать, как отключить атрибут в другом столбце в той же таблице
- 3. Значение CHECK отсутствует в другом столбце в той же таблице
- 4. свиньи добавить столбец на основе значения в другом столбце
- 5. Применить функцию к элементу столбца dataframe на основе значения в другом столбце для той же строки?
- 6. Как масштабировать значения в столбце на основе значений в другом столбце в электронной таблице google?
- 7. Обновление столбца SQL на основе столбца в той же таблице
- 8. Копировать значения столбца в другой столбец в той же таблице
- 9. Изменение цвета в одном столбце на основе значения в другом
- 10. создать столбец на основе повторения в другом столбце
- 11. Создайте случайный столбец на основе значения из столбца в той же таблице
- 12. Добавление нескольких ячеек в столбце на основе значения в другом столбце, но в том же ряду
- 13. Pandas изменение значения столбца на основе подстроки в другом столбце
- 14. создать столбец в таблице данных, основанный на изменениях в другом столбце в таблице данных R. Таблица
- 15. Сравнить тот же столбец в той же таблице
- 16. FK в той же таблице
- 17. Jqgrid динамический dropdownlist на основе значения в некотором другом столбце
- 18. Оператор sql, как скопировать значения в 1 столбец в другой столбец в той же таблице
- 19. Как добавить значения в столбец результатов на основе наличия определенных значений в другом столбце в SQL?
- 20. SQL подсчета значений из двух столбцов и показывать результат в другом столбце в той же таблице
- 21. Excel - Заменить значение ячейки на основе значения в другом столбце
- 22. Добавить новый столбец на основе логических значений в другом столбце
- 23. Sqlalchemy - обновить столбец на основе изменений в другом столбце
- 24. вычислить столбец данных на основе двух строк в другом столбце
- 25. Как выбрать строку на основе существования значения в другом столбце
- 26. Как изменить значения в столбце на основе значений ячеек в другом столбце в excel?
- 27. MySQL Условный подсчет на основе значения в другом столбце
- 28. значение Обновление на основе строки в той же таблице
- 29. Выбор наиболее частого значения в столбце на основе значения другого столбца в той же строке?
- 30. на основе значения в одном столбце изменить значение в другом столбце
Какие СУБД вы используете? – Quassnoi
Также, что такое триггер? Вставить, обновить или что? – Quassnoi
@brian tompsett Я использую студию управления sql server 2014 и ее триггер обновления –