2011-06-07 69 views
0

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

也许是这样的:

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

如果您有四张结构完全相同的表格,则表明您的建模可能存在错误。更甚的是,如果在这种情况下,显然适当/有必要将相同的行插入多于一个的行中。 – 2011-06-07 18:15:47

+0

@Damien_The_Unbeliever没有错。原因是分离主记录和最后24小时记录,以便从表中读取时不会花费很长时间,因为我必须以毫秒为单位返回响应。 – 2011-06-07 18:31:18

+1

@Damien是对的。您的时间列索引和基于时间的查询将会很快。通过拥有你的设计,你需要寻求数据不一致的地方。 – 2011-06-07 19:12:40

回答

1

心不是一个办法 - 这是四个独立的刀片。 您可以将所有结果放入单个临时表中,然后选择其他表以减少代码,但不能一次完成所有四项。

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

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) 
1

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

BEGIN TRANSACTION 

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

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

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

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

COMMIT 
0

你可以建立一个表是“主”和INSERT只给它。然后您必须在该表上创建一个触发器,将这些更改推送到需要新行的其他任何其他触发器中。其他海报是正确的 - 这是四个INSERT s,但这可以简化客户端代码。同时使它变得令人困惑... =/