合并插入/删除/更新整行而不命名EVERY变量

时间:2013-01-09 00:36:06

标签: tsql merge insert sql-update

我想做点什么

use mydb
go

begin tran
merge dbo.aTestTarget as T
using dbo.aTestSource as S
on (T.link = S.link)
when not matched by target and (s.code like '*I%') then
      -- is there a way to do this sort of thing?
      insert (T.*) values (S.*)

when matched and ...
rollback tran
go

有没有办法在没有定义每列的情况下执行此操作?我有很多20到50个字段的表格。

1 个答案:

答案 0 :(得分:1)

不,没有。无论如何,使用*语法是一种不好的做法,因为它会导致难以维护的脆弱代码。

但是,在SSMS中,您可以将表下的Columns文件夹拖放到编辑器中,以获得该表的所有列的逗号分隔列表。这使得输入更容易一些。 :)