2015-07-20 96 views
1

我需要根据SQL Server中的某些条件将记录安装到两个不同的表中。在Oracle中有一个名为INSERT ALL的方法,可以根据下面的条件插入到不同的表中。在SQL Server中是否有任何等效的Oracle INSERT ALL方法

insert all 
    when loc in ('NEW YORK', 'BOSTON') THEN 
    into dept_east(deptno, dname, loc) values(deptno, dname, loc) 
    when loc in ('CHICAGO') THEN 
    into dept_mid(deptno, dname, loc) values(deptno, dname, loc) 
    else 
    into dept_west(deptno, dname, loc) values(deptno, dname, loc) 
select deptno, dname, loc 
    from dept 

SQL中是否有任何方法可以直接插入到多个表中。我也试过使用MERGE语句。

+2

在SQL Server中,任何DML语句只能影响单个表 - 但您的激励示例看起来像是[分区表](https://msdn.microsoft.com/zh-cn/library/ms190787.aspx )可能是(部分)解决方案。 –

+0

请注意,SQL Server默认支持过程式SQL,因此您可以轻松地将多个逻辑命令作为单个命令发送,包括您需要的任何条件。事实上,分离这样的数据闻起来有点不一样 - 分区表可能是更好的选择。尽可能保持数据正常。 – Luaan

回答

1

没有等价物。执行多个插入语句。

如果您的表结构适合使用分区视图,您可以查看该表。这是在SQL Server的一个语句中真正插入多个表的唯一方法。

相关问题