我有两个表Account
和Image
,我想在用户创建帐户时一次插入这两个表。下面的存储过程是否适合将数据插入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
别忘了触发器。。。这也是一个可能的解决方案。