2013-05-18 51 views
1

我想問一下,哪種方法是更好的方法來插入/更新/刪除數據到數據庫,直接從數據層使用查詢或爲每個插入和刪除創建存儲過程?使用查詢從程序或使用存儲過程插入/更新/刪除數據庫中的數據

+0

你可以找到利弊&存儲過程的缺點v/s內嵌查詢... – Sachin

+0

我認爲最好的方法是程序。 –

+0

如果我的要求是動態地創建一些表格,那麼我應該爲這些表格做些什麼? – MYK

回答

1

對於您正在討論的查詢類型,您的問題取決於完全是

  • 有關與需要沒有數據庫端規則的單個表簡單的CRUD操作應遵循的,直接SELECTUPDATE,或DELETE語句都是精品。

  • 對於更復雜的操作,例如當數據庫應用規範化並訪問多個表時,存儲過程值得工作。 (實際上,「僅在需要額外工作時才使用存儲過程」是一個很好的規則。)

  • 對於單個查詢調用中的多行的簡單CRUD,程序查詢是唯一的方法除非你想要使用XML。

  • (以及簡單的CRUD在那裏你將要使用的記錄感知接口,要麼應該工作得很好。)

+0

從安全的角度來看也有所不同。在SQL Server中,您可以將'INSERT INTO A'語句放入存儲過程,並授予用戶在該SP上的EXECUTE權限,在這種情況下,不需要在'A'上的INSERT權限。如果沒有INSERT權限,用戶將只能使用該SP插入「A」。調用一個任意的'INSERT INTO A ...'將被禁止。 –

0

我總是用一個存儲過程來完成簡單的CRUD操作

我曾經在一個SP內做過所有的CRUD操作,希望對你有幫助。

對於實例

create proc <procedure name> 
(
    <parameterName> <datatype>=<default value if any>, 
    @mode varchar(20) 
) 
as 
begin 

if(@mode='Insert') 
begin 

    --your query for insert 
end 

if(@mode='Update') 
begin 

    --your query for update 
end 

if(@mode='Delete') 
begin 

    --your query for delete 
end 

if(@mode='Select') 
begin 

    --your query for Select 
end 

end 

,你可以有更多的「模式」,如「按ID選擇」,「軟刪除」,「硬刪除」,等等......

相關問題