使用单个查询将数据添加到多个表

1 sql-server-2008 sql-server t-sql

我想使用单个INSERT INTO查询将数据添加到多个表,我可以这样做吗?

如果可能,请指导我并提供语法。

Tho*_*ger 6

这不可能。该INSERT语句按照语法(BOL 参考)采用单个目标对象:

[ WITH <common_table_expression> [ ,...n ] ]
INSERT 
{
        [ TOP ( expression ) [ PERCENT ] ] 
        [ INTO ] 
        { <object> | rowset_function_limited 
          [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
        }
    {
        [ ( column_list ) ] 
        [ <OUTPUT Clause> ]
        { VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n     ] 
        | derived_table 
        | execute_statement
        | <dml_table_source>
        | DEFAULT VALUES 
        }
    }
}
[;]
Run Code Online (Sandbox Code Playgroud)

记下<object>语法片段第 6 行的占位符。

您想在一个语句中插入两个表是否有特殊原因? 也许您正在寻找两个插入要么成功要么失败?在这种情况下,您将查看显式交易:

begin tran;
    insert into dbo.YourTable1 ...
    insert into dbo.YourTable2 ...
commit tran;
Run Code Online (Sandbox Code Playgroud)

除了代码简洁和原子性之外,我看不出有任何其他原因需要将多个目标表合并到一个INSERT语句中。