iT邦幫忙

1

SQL insert小技巧(使用SQL Sever/Go)

  • 分享至 

  • xImage
  •  

最近寫了一堆stored proceudure
在SQL上遇到很多問題,覺得這個方法很實用
找了幾個地方後蒐集到幾個我有使用的方法,分享給大家
也避免我忘記有地方可以回來再看一次XD

Tips

insert into 沒有批次插入方法

如大標題,我用的是Go
看到文章的網址被吃了,現在找不到
總結就是要insert多筆資料要用for迴圈insert
MSSQL不支援

insert 後取得identity ID

應用場景

就是有一些table你有設identity ID
在insert後你要做別的操作又不想在select一次
或是拿到ID就可以解決掉一堆麻煩的語法

方法

  1. @@IDENTITY
    第一種方法

    Insert into YourTable(Name)
    Values('john wick')
    SELECT @@IDENTITY as ID
    

    第二種方法

    BEGIN TRAN
        Insert into YourTable(Name)
        Values('john wick')
    
        Insert into SecondTable(ID)
        Values(@@IDENTITY)
    COMMIT TRAN
    
  2. OUTPUT子句

    Insert into YourTable(Name)
    OUTPUT INSERTED.ID,INSERTED.Name
    Values('john wick')
    

    Go的部分

    var ID,Name String
    if err := db.QueryRow(`...`,params).Scan(&ID,&Name); err != nil {
        ...
    }
    

利用IsNull做where option

應用場景

有時候在頁面input需要做動態查詢
有的欄位會輸入值,有的又不需要
這時候利用IsNull超方便
就不需要when case...一大堆

方法

DECLARE name varchar(20),
        id int
    
SELECT * FROM YourTable
WHERE name = IsNull(@name,name)
AND id = IsNull(@id,id)

參考資料


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言