簡體   English   中英

使用單個存儲過程一次插入2個表是否合適

[英]Is it good to insert 2 table at a time by using single stored procedure

我有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

這很好,但永遠記得這最終會成長。 如果其他開發人員觸摸您的代碼,這可能會變得難看。

您可以做的是創建兩個存儲過程,一個用於插入帳戶,另一個用於插入圖像。 這至少可以讓你在實體之間進行某種分離(這允許你重用名稱並避免各種沖突,更不用說你可能想要在你的sproc中做的其他事情了)。 插入帳戶后,您可以調用存儲過程來插入圖像,如下所示:

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

並且不要忘記觸發器......這也可能是一種可能的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM