Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用不同的查询同时更新两列_Sql_Sql Server 2008 R2 - Fatal编程技术网

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

Sql 如何使用不同的查询同时更新两列,sql,sql-server-2008-r2,Sql,Sql Server 2008 R2,我有一个after-insert触发器,它根据连接更新两个不同的列。基本上,它将Id转换为值。这可以正常工作,除非其中一个ID不匹配(即,默认为零),然后两个ID都不更新。如果连接失败,它应该只插入null CREATE TRIGGER [AfterHistoryInsert] ON [Jet].[HistoryEntity] FOR INSERT AS BEGIN Update t1 Set t1.OldValue = t2.Value, t1.NewValue = t3.Value

我有一个after-insert触发器,它根据连接更新两个不同的列。基本上,它将Id转换为值。这可以正常工作,除非其中一个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

Greg

尝试左外部联接,而不是join

如果要更新到更大的表中,建议之一是: -选择要更新到临时表中的所有列(在案例值中)
-通过使用左外部联接到临时表来更新语句。

是否尝试了左外部联接?我现在有了。好的,谢谢。