我有一个存储过程,它在SQL Server数据库上的4个表上执行insert。这4个表具有完全相同的结构。我怎样才能一次执行插入?
可能是这样的:
INSERT INTO Table1, Table2, Table3, Table4
VALUES (@p1, @p2, ....... @pn)
答案 0 :(得分:1)
没有办法 - 这是四个单独的插入。 您可以将所有结果放入单个临时表中,然后选择其他表来减少代码,但不能同时执行所有四个。
答案 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
,但这可以简化客户端代码。同时让它变得混乱...... = /