首页 > 解决方案 > SQL Server 触发器插入(更新插入的行)

问题描述

U_DIGIT在 SQL Server 中插入新记录(在此新记录中更新)后,我需要更新一列。我认为最好的方法是在插入的记录中使用触发器来执行此操作,但它应该只在ORIGIN列中具有“OL”的新记录中完成。

我试过这段代码,但它不起作用。需要一些帮助,请。谢谢。

CREATE TRIGGER tr_ol_ins_digit 
ON ol
AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;

    UPDATE ol
    SET u_digit = 'path\' + cast(OL.OLID as varchar(8)) + '.PDF'
    WHERE olstamp IN (SELECT olstamp 
                      FROM inserted 
                      WHERE origin = 'OL')
END
GO

标签: sql-servertsqltriggersdatabase-trigger

解决方案


我认为反斜杠是这里的问题。你需要逃避它。

尝试这个:

CREATE TRIGGER tr_ol_ins_digit 
ON  ol
AFTER INSERT
AS 
BEGIN
  SET NOCOUNT ON;

  update ol
  set u_digit = 'path\\' + cast(OL.OLID as varchar(8)) + '.PDF'
  where olstamp in (select olstamp from inserted where origin = 'OL')

END
GO

推荐阅读