台灣最大程式設計社群網站
線上人數
745
 
會員總數:241868
討論主題:187137
歡迎您免費加入會員
討論區列表 >> MS SQL >> Update的問題
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Update的問題
價值 : 10 QP  點閱數:243 回應數:9

樓主

Wind
門外漢
0 89
1168 145
發送站內信

最近看到在預存裡面的一種寫法,簡單的說,就是,某些欄位傳進來後,是空值,我就不更新該欄位,有值才更新,
而寫法是用字串接的方式
例:
IF @AAA <> ''
BEGIN
@SQL = 'aaa = ''' + @AAA +'','
END
exec('update table set ' + @SQL)
但我不是很喜歡這樣的寫法,所以我改成這樣<但這樣欄位一多,就會很多update的語句>
IF @AAA <> ''
BEGIN
update table set aaa=@AAA
END
後來我又改成
update table set aaa=ISNULL(@AAA, aaa)

-----------------------------------------
不知道這樣的需求,各位大大有什麼更好的方式嗎?
因為ISNULL也只能用在null




搜尋相關Tags的文章: [ update欄位 ] ,
本篇文章發表於2018-01-28 14:05
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
您可以用TRIGGER比較簡單吧
CREATE TRIGGER dbo.使用者資料觸發程序
ON dbo.使用者資料
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;

if (Select Count(*) From inserted) > 0 and (Select Count(*) From deleted) = 0
begin
print ('新增')
end

if (Select Count(*) From inserted) = 0 and (Select Count(*) From deleted) > 0
begin
print ('刪除')
end

if (Select Count(*) From inserted) > 0 and (Select Count(*) From deleted) > 0
begin
print ('修改')
end

END
GO
本篇文章回覆於2018-01-28 14:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Wind
檢舉此回應
可是,我的問題是,例如,我有三個欄位,欄位1,欄位2有值進來,我就update這二個欄位,
若是空白值進來,就不更新。
本篇文章回覆於2018-01-28 22:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

真的有點難
檢舉此回應
IF @AA IS NULL
BEGIN
SELECT @AA
END
本篇文章回覆於2018-01-29 11:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最有價值解答

Hsu,Harry
檢舉此回應

本篇文章回覆於2018-01-29 16:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Wind
檢舉此回應
其實我都是用這樣 不知道這樣有沒有什麼缺點
IF ISNULL(@A,'') <> ''
BEGING
Update u set a=@A where pk=pk
END
IF ISNULL(@B,'') <> ''
BEGING
Update u set a=@B where pk=pk
END
本篇文章回覆於2018-02-03 19:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
一個一個判斷 最簡單 也單純 沒啥不好的
本篇文章回覆於2018-02-03 20:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

Hsu,Harry
檢舉此回應
是的..效能影響不大, 簡單就好
本篇文章回覆於2018-02-04 11:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Wind
檢舉此回應
效能不會影響?因為有人會說,一個sp中太多的語句不太好
像下面這樣
update ....;
update ....;
update ....;
update ....;
本篇文章回覆於2018-02-04 13:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
不錯的參考

Hsu,Harry
檢舉此回應
這要問施主您自己了... 一秒異動1筆 / 1000筆 的設計方法不同,1筆/秒 那就... 隨喜。

但反而是語法一大堆, 可維護性也是重要課題。
本篇文章回覆於2018-02-05 10:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.