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
此外你与inserted
table没有关联。
您需要在 PK 上加入 inserted
以更新插入的行,否则您每次都会更新 table 中的所有行。
set dayC = (convert(varchar, day, 23))
看起来您正在将 date
或 datetime
转换/格式化为 YYYY-MM-DD
格式的字符串
您可以使用计算列来代替触发器
ALTER TABLE [myschema].[deposits]
ADD [dayc] AS CONVERT(VARCHAR(10), [day], 23)
当 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
此外你与inserted
table没有关联。
您需要在 PK 上加入 inserted
以更新插入的行,否则您每次都会更新 table 中的所有行。
set dayC = (convert(varchar, day, 23))
看起来您正在将 date
或 datetime
转换/格式化为 YYYY-MM-DD
格式的字符串
您可以使用计算列来代替触发器
ALTER TABLE [myschema].[deposits]
ADD [dayc] AS CONVERT(VARCHAR(10), [day], 23)