我想根据提供给它的过程提供的输入动态生成触发器的名称。
CREATE TRIGGER '[trig'+@TableName + 'InsertLog]'
ON 'db.' + @TableName
AFTER INSERT
AS
[...]
但上述代码会在关键字' TRIGGER'附近引发错误'错误的语法。
非常感谢您在此代码中解决问题的任何工作或见解。
答案 0 :(得分:1)
您可以使用动态sql。请考虑以下事项:
declare @sql varchar(max)
set @sql = 'CREATE TRIGGER [trig' + @tableName + '_InsertLog]
ON dbo.' + @TableName + '
AFTER INSERT
AS ...'
execute @sql
根据您的SQL风格调整。
那就是说,我想提醒你不要这样做。您可能认为这是重用代码和/或确保一致性的便捷方式。但抽象程度并不好,从长远来看,你只会为自己创造更多问题。例如。这种记录方法是反应性的。因此,当您实际尝试使用日志时,您会发现: