我必须在数据库中自动编写表格的触发器脚本。创建存储过程文本时,我收到触发器脚本的语法错误。将触发器定义文本复制到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 + '--')
所以在每次评论之前我都会添加换行符,但它不起作用。
答案 0 :(得分:1)
使用CHAR(10)
将新行字符插入SQL字符串。
如果需要,您还可以使用CHAR(13)
插入回车字符,因此CHAR(13)+CHAR(10)
将是CRLF
。
您无法使用替换修复当前字符串。你需要手工构建所需的字符串并用它来更新你的表。
答案 1 :(得分:0)
添加了EXEC( [Trigger Definition] )
。现在它可以添加到存储过程中。