Sybase: как получить доступ к измененным столбцам в триггере обновления

Я пишу триггер, чтобы получить все измененные столбцы после обновления таблицы. Я думаю, что можно запустить триггер при изменении определенного поля. Но этого недостаточно для моего требования. Могу ли я сделать это, сравнив вставленную и удаленную таблицу?


person Eric Liu    schedule 13.08.2012    source источник


Ответы (2)


Вы можете создать trigger для обновления! А затем проверьте, какие столбцы были обновлены.

Вы также можете сравнить до (deleted таблица) и после (inserted таблица), но вы также должны видеть каждый столбец отдельно.

person aF.    schedule 13.08.2012
comment
У меня есть некоторые трудности с использованием имен столбцов в таблице sys_columns для циклического прохождения. В настоящее время я использую триггер для обновления, чтобы проверять столбец за столбцом вручную. Не лучшая идея для таблицы с 50 колонками :( - person Eric Liu; 14.08.2012

Когда вы говорите «недостаточно общий», это звучит так, как будто вы имели в виду использование триггеров в качестве общего средства выяснения того, какие столбцы в каких таблицах когда изменились, и вам нужен метод для некоторых/многих ваших таблиц, которые различные клавиши и поля.

aF предлагает использовать триггер «для» (или после), и вы можете либо сравнить вставленные и удаленные, либо использовать функцию «if update (имя столбца) ...».

Если вы хотите обобщить вещи, насколько я понимаю, я думаю, это означает, что вам нужно написать некоторые инструменты, которые берут список таблиц, которые вы где-то настраиваете как метаданные, и обрабатывают их в триггеры, которые делают то, что вы хотите ( например, сохранить где-нибудь содержимое первичного ключа, идентификатор таблицы и измененные поля.)

person abe_crabbers    schedule 13.08.2012