Решение задачи
mssql список обновленных колонок в триггере используя функция updated_columns
Условие:
mssql список обновленных колонок в триггере используя функция updated_columns
Решение:
В Microsoft SQL Server (MSSQL) нет встроенной функции updated_columns
, которая бы возвращала список обновленных колонок в триггере. Однако, вы можете достичь этой функциональности, используя другие методы.
Один из способов - использовать таблицу временных таблиц, чтобы сохранить состояние старых значений и сравнить их с новыми значениями. Вот пример, как это можно сделать:
- Создайте таблицу временных таблиц, которая будет хранить старые значения:
CREATE TABLE #OldValues (
ColumnName VARCHAR(255),
OldValue VARCHAR(MAX)
)
- Внутри вашего триггера, используйте оператор
INSERT INTO ... SELECT
для сохранения старых значений в таблицу временных таблиц:
INSERT INTO #OldValues (ColumnName, OldValue)
SELECT COLUMN_NAME, CAST(d.COLUMN_NAME AS VARCHAR(MAX))
FROM INFORMATION_SCHEMA.COLUMNS c
INNER JOIN deleted d ON c.COLUMN_NAME = d.COLUMN_NAME
WHERE TABLE_NAME = 'YourTableName'
- Затем, используйте оператор
UPDATE
для обновления таблицы временных таблиц с новыми значениями:
UPDATE #OldValues
SET OldValue = CAST(i.COLUMN_NAME AS VARCHAR(MAX))
FROM INFORMATION_SCHEMA.COLUMNS c
INNER JOIN inserted i ON c.COLUMN_NAME = i.COLUMN_NAME
WHERE TABLE_NAME = 'YourTableName'
- Наконец, вы можете получить список обновленных колонок, сравнивая старые и новые значения в таблице временных таблиц:
SELECT ColumnName
FROM #OldValues
WHERE OldValue <> NewValue
Обратите внимание, что в примере выше, вам нужно заменить 'YourTableName'
на имя вашей таблицы.
Это только один из возможных подходов к решению данной задачи. В зависимости от ваших требований и структуры базы данных, может потребоваться использовать другие методы или подходы.
Похожие работы
Попробуй и другие функции
Решения по другим предметам
А
Б
В
М
П
С
Т
Э