0

我正在使用 sql server 2012 并拥有一个数据库。

在这个数据库中,我有 2 个表。1 表后端实时数据。另一个结构完全相同,但有一个临时表 - 没有实时系统对其进行处理。

我想编写一个 sql 查询以包含在存储过程/sql 作业中,该作业针对临时表运行并将数据更新/插入到实时表中。如果记录存在于实时表中,则更新它,如果没有插入到它。由于登台表每天需要运行时可能有大约 100,000 个 - 我担心性能,特别是实时表被锁定的可能性。在查询运行时,实时表可能正在从另一个源更新,因此可能需要在行级别进行锁定。

我已经概述了这个过程和我的担忧,所以我希望在编写查询时得到帮助。我不需要影响实时表的性能,但不确定在传输数据时没有其他系统更新每一行的行。我怎么能用 sql 做到这一点?

4

1 回答 1

1

你想要一个合并:

merge into Emp2 as Target
    using emp as Source on Target.FirstName=Source.Firstname and Target.LastName=Source.lastName
    when matched then 
        update set Target.FirstName=Source.FirstName,
                        Target.LastName = Source.LastName
    when not matched then
        insert (FirstName,LastName, LastTraining) values (Source.FirstName,Source.LastName,Source.LastTraining);
于 2013-03-26T01:00:52.367 回答