SQL 触发器插入新变量

SQL trigger insert new variable

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

这是我写的。

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,我在这里缺少什么?

您需要将其更改为after insert

此外你与insertedtable没有关联。

您需要在 PK 上加入 inserted 以更新插入的行,否则您每次都会更新 table 中的所有行。

use-the-inserted-and-deleted-tables

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

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

您可以使用计算列来代替触发器

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