我有一个存储过程,执行插入到SQL Server数据库上的4个表上。这4个表具有完全相同的结构。我怎样才能一次执行插入?SQL Server - 一次插入多个表的记录
也许是这样的:
INSERT INTO Table1, Table2, Table3, Table4
VALUES (@p1, @p2, ....... @pn)
我有一个存储过程,执行插入到SQL Server数据库上的4个表上。这4个表具有完全相同的结构。我怎样才能一次执行插入?SQL Server - 一次插入多个表的记录
也许是这样的:
INSERT INTO Table1, Table2, Table3, Table4
VALUES (@p1, @p2, ....... @pn)
心不是一个办法 - 这是四个独立的刀片。 您可以将所有结果放入单个临时表中,然后选择其他表以减少代码,但不能一次完成所有四项。
你只需将它们分开,每说,他们不能被合并为一个语句,但这样的工作同样也是如此。
INSERT INTO Table1
VALUES (@p1, @p2)
INSERT INTO Table2
VALUES (@p1, @p2)
INSERT INTO Table3
VALUES (@p1, @p2)
INSERT INTO Table4
VALUES (@p1, @p2)
您不能在单个INSERT语句中插入多个表。为确保插入到所有四个表中都是原子的,请将插入件包装在transaction中。伪代码:
BEGIN TRANSACTION
INSERT INTO Table1(...) VALUES(...)
INSERT INTO Table2(...) VALUES(...)
INSERT INTO Table3(...) VALUES(...)
INSERT INTO Table4(...) VALUES(...)
COMMIT
你可以建立一个表是“主”和INSERT
只给它。然后您必须在该表上创建一个触发器,将这些更改推送到需要新行的其他任何其他触发器中。其他海报是正确的 - 这是四个INSERT
s,但这可以简化客户端代码。同时使它变得令人困惑... =/
如果您有四张结构完全相同的表格,则表明您的建模可能存在错误。更甚的是,如果在这种情况下,显然适当/有必要将相同的行插入多于一个的行中。 – 2011-06-07 18:15:47
@Damien_The_Unbeliever没有错。原因是分离主记录和最后24小时记录,以便从表中读取时不会花费很长时间,因为我必须以毫秒为单位返回响应。 – 2011-06-07 18:31:18
@Damien是对的。您的时间列索引和基于时间的查询将会很快。通过拥有你的设计,你需要寻求数据不一致的地方。 – 2011-06-07 19:12:40