Я пытаюсь создать триггер динамически, и мне нужно заменить часть оператора create, в частности имя базы данных, с которой выполняется соединение.
CREATE TRIGGER [dbo].[tr_UseType_update] ON [dbo].[UseType] FOR UPDATE AS
BEGIN
SET NOCOUNT ON
INSERT [dbo].[UseType]
SELECT 'Updated', i.*
FROM inserted
INNER JOIN [(SELECT DB_NAME())].[dbo].[UseType] i ON inserted.[UseTypeID] = i.[UseTypeID]
END
Я пробовал это, но, очевидно,он просто использует текст, который фактически не оценивает SELECT DB_NAME (), есть ли способ получить его для оценки этого значения.
Я использую sql 2005/8.У нас есть инструмент развертывания, который использует sqlcmd, поэтому запасным вариантом будет изменение инструмента для приема переменных, которые можно передать в sqlcmd, но если я смогу уменьшить объем работы и выполнить ее в самом скрипте (который генерируется), который быбудь удобен.