SQL Server - 一次将记录插入到多个表中

时间:2011-06-07 18:10:20

标签: sql sql-server stored-procedures insert

我有一个存储过程,它在SQL Server数据库上的4个表上执行insert。这4个表具有完全相同的结构。我怎样才能一次执行插入?

可能是这样的:

INSERT INTO Table1, Table2, Table3, Table4
VALUES (@p1, @p2, ....... @pn)

4 个答案:

答案 0 :(得分:1)

没有办法 - 这是四个单独的插入。 您可以将所有结果放入单个临时表中,然后选择其他表来减少代码,但不能同时执行所有四个。

请参阅: Transact-sql insert in two tables at once?

答案 1 :(得分:1)

您无法在单个INSERT语句中插入多个表。要确保插入到所有四个表中是原子的,请将插入包装在transaction中。伪代码:

BEGIN TRANSACTION

  INSERT INTO Table1(...) VALUES(...)

  INSERT INTO Table2(...) VALUES(...)

  INSERT INTO Table3(...) VALUES(...)

  INSERT INTO Table4(...) VALUES(...)

COMMIT

答案 2 :(得分:0)

你只需要将它们分开,说它们不能合并成一个声明,但这也同样适用。

INSERT INTO Table1
VALUES (@p1, @p2)

INSERT INTO Table2
VALUES (@p1, @p2)

INSERT INTO Table3
VALUES (@p1, @p2)

INSERT INTO Table4
VALUES (@p1, @p2)

答案 3 :(得分:0)

您可以将一个表设置为“主”,仅将INSERT设置为它。然后,您必须在该表上创建一个触发器,以将更改推送到需要新行的任何其他更改。其他海报是正确的 - 它是四个INSERT,但这可以简化客户端代码。同时让它变得混乱...... = /