我有一个在多个字段中输入的表单。
然而,在视图中看起来它们都被组合在一起但在数据库中它们都属于不同的表并且它们彼此依赖,问题是如何将记录插入到彼此引用的多个表中,{ {1}}要求Table 2
中输入的数据中的主键将记录插入其中。
目前我正在以下列方式这样做:
Table 1
然而,这不是我认为的正确方法吗?很多来回连接打开和关闭,读取写入以及如果查询在中间失败而不是模式将处于不一致状态?
答案 0 :(得分:1)
您可以编写存储过程并将其全部插入到一个事务和一个调用中。此外,您可以使用SCOPE_IDENTITY()
来获取在上一个命令中插入的标识值:
CREATE PROCEDURE Proc_Name (... parameter list ...)
AS
BEGIN TRAN
INSERT INTO table1(...) VALUES(…);
INSERT INTO table2(SCOPE_IDENTITY(),table2) VALUES(…);
INSERT INTO table3(SCOPE_IDENTITY(),table3,table3Desc) VALUES(…);
COMMIT TRAN