使用单个存储过程一次插入2个表是否好



我有两个表AccountImage,我想在用户创建帐户时一次插入这两个表。下面的存储过程是否适合将数据插入2个表,或者是否有其他更好的方法?

Create procedure spAccountImageInsert
(@AccID int, 
@AccName varchar(50), 
@Email money, 
@ImageID int, 
@ImageFile image)
as 
begin
Insert into Account(AccID, AccName, Email) 
values(@AccID, @AccName, @Email)
Insert into Image(AccID, ImageID, ImageFile) 
values(@AccID, @ImageID, @ImageFile)
end

这很好,但请记住,这最终可能会增长。如果其他开发人员接触你的代码,这可能会变得很难看。

您可以创建两个存储过程,一个插入帐户,另一个插入映像。这至少为您的实体之间提供了某种分隔(这允许您重用名称并避免各种冲突,更不用说您可能希望在存储过程中执行的其他操作了)。插入帐户后,您可以调用存储过程来插入图像,如下所示:

CREATE PROCEDURE InsertAccount
@AccountID int
AS BEGIN
--first insert into an account
INSERT INTO ... VALUES ...
--then insert into an image
EXEC dbo.InsertImage
END

或者更好的是一个只执行每一个的存储过程:

EXEC dbo.InsertAccount
EXEC dbo.InsertImage

别忘了触发器。。。这也是一个可能的解决方案。

最新更新