У меня есть триггер, который использует CHECKSUM
для сравнения определенных столбцов между вставленными и удаленными. Иногда мне нужно обновить, какие столбцы проверены, поэтому я создал другую процедуру, которая считывает текст триггера, изменяет логику CHECKSUM
и выдает новую команду триггера UPDATE
или DROP/CREATE, чтобы внести изменения.SQL Server: обнаружение ALTER vs CREATE в тексте триггера
Вот моя проблема: я не знаю, стоит ли выдавать команду DROP TRIGGER
первым, потому что я не могу обнаружить sysComments.text
представляет ли собой ALTER TRIGGER
или CREATE TRIGGER
синтаксис.
Я мог бы использовать что-то вроде PATINDEX('%CREATE%PROC%', @triggerText)
, но это было бы ненадежно, поскольку оно могло бы подбирать комментарии и другие неприменимые тексты.
Любые идеи?
Не могли бы вы создать партию с первым 'if (object_id ('triggername) равно null) create trigger ...' с фиктивным содержимым, а затем всегда использовать alter trigger? –
Привет @James - триггер всегда будет существовать до того, как я попытаюсь его изменить, я просто не знаю, есть ли текст, который я возвращаю из sys.sql_modules, имеет ALTER или CREATE. Так как я планирую повторить этот точный текст (только с моими изменениями, в которые он был интерполирован), мне нужно было бы сбросить триггер, если это синтаксис CREATE, а не ALTER. – sisdog