首页 > 解决方案 > SQL 触发器插入新变量

问题描述

当使用触发器使用新行更新表时,我正在尝试根据特定条件填充列。

这是我写的。

create trigger [myschema].[charD] 
on [myschema].[deposits]
after update
as
begin
    set nocount on;

    update myschema.deposits
        set dayC = (convert(varchar, day, 23))
    from myschema.deposits
    where dayC is null
end
GO

添加新行时,这不会更新或填充列 dayC,我在这里缺少什么?

标签: sql-servertsqltriggers

解决方案


set dayC = (convert(varchar, day, 23))

看起来您正在将 adate或格式转换/格式化datetime为字符串YYYY-MM-DD

您可以使用计算列,而不是使用触发器

ALTER TABLE [myschema].[deposits]
    ADD [dayc] AS CONVERT(VARCHAR(10), [day], 23)

推荐阅读