如何使用不同的查询同时更新两列

时间:2013-09-30 00:36:18

标签: sql sql-server-2008-r2

我在插入触发器之后有这个,它根据连接更新两个不同的列。基本上它将Id转换为值。这工作正常,除非其中一个ID不匹配(即默认值为零)然后都不更新。如果连接失败,则应该只插入null。

CREATE TRIGGER [AfterHistoryInsert]
ON [Jet].[HistoryEntity]
FOR INSERT
AS
BEGIN
    Update t1 Set t1.OldValue = t2.Value, t1.NewValue = t3.Value 
        From Jet.HistoryEntity t1
        join Jet.LookupListItemEntity t2 on Cast(t1.OldValue as int) = t2.Id
        join Jet.LookupListItemEntity t3 on Cast(t1.NewValue as int) = t3.Id
        inner join inserted i on i.Id = t1.Id
        where t1.FieldName like '%Id'
END

格雷格

2 个答案:

答案 0 :(得分:1)

尝试左外连接而不是连接

答案 1 :(得分:0)

如果您要更新到更大的表格,其中一个建议是: - 选择要更新的所有列(在您的情况下为Value)到临时表中 - 使用左外连接到临时表来更新语句。