需要在触发器脚本中添加新行字符

时间:2016-09-20 17:32:39

标签: sql-server triggers

我必须在数据库中自动编写表格的触发器脚本。创建存储过程文本时,我收到触发器脚本的语法错误。将触发器定义文本复制到SQL Server的查询窗口中会显示该定义在脚本中不包含CRLF字符,大部分定义都在注释行中。

无论如何都要在触发器定义文本中添加换行符。 我使用此查询获取触发器定义:

SELECT trig.name AS "@TriggerName", REPLACE(OBJECT_DEFINITION(trig.object_id), '''', '''''')  AS "@TrigDefinition"
FROM sys.triggers trig
WHERE trig.type = 'TR'

文本触发器的触发器定义文本如下所示:

-- =============================================  -- Author:  <Author,,Name>  -- Create date: <Create Date,,>  -- Description: <Description,,>  -- =============================================  
    CREATE TRIGGER TestTrigger2     ON  BundleProduct      AFTER DELETE,UPDATE  AS   BEGIN   -- SET NOCOUNT ON added to prevent extra result sets from   -- interfering with SELECT statements.   SET NOCOUNT ON;        -- Insert statements for trigger here   select * from Edging;  END    

如何将新行字符添加到触发器脚本中,以便将其添加到从查询创建的存储过程中?

更新 我尝试使用REPLACE字符串函数将换行符(CHAR(13)+ CHAR(10)添加到触发器定义中:

DECLARE @NewLine varchar(2) = CHAR(13) + CHAR(10);
REPLACE(TrigDefinition, '--', @NewLine + '--')

所以在每次评论之前我都会添加换行符,但它不起作用。

2 个答案:

答案 0 :(得分:1)

使用CHAR(10)将新行字符插入SQL字符串。

如果需要,您还可以使用CHAR(13)插入回车字符,因此CHAR(13)+CHAR(10)将是CRLF

您无法使用替换修复当前字符串。你需要手工构建所需的字符串并用它来更新你的表。

答案 1 :(得分:0)

添加了EXEC( [Trigger Definition] )。现在它可以添加到存储过程中。