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

最近写了一堆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)

参考资料


<<:  【C#】Delegate and Events

>>:  自己的hackmd自己架 - Codimd

[Day 14] 进入JavaScript,认识浏览器中的JS

前言 前面几天说了很多CSS\SCSS的介绍和学习方式,终於要踏入JS啦,边学习的过程也可以发现他要...

每个人都该学的30个Python技巧|技巧 11:回圈二部曲—while回圈(字幕、衬乐、练习)

昨天教完了第一种回圈,也就是for回圈,那今天当然就要讲第二种罗。while回圈的条件式通常都会是关...

从 JavaScript 角度学 Python(15) - 模组 (Module)

前言 接下来聊聊 Python 中的模组 (Module) ,毕竟 JavaScript 也有所谓的...

Day12 - LinkList

大家好,我是长风青云。今天是铁人赛第十二天。 其实LinkList应该要拿来跟Array做比较,但我...

第29天:英雄指南-6.从服务器端获取资料(1)

GitHub:https://github.com/dannypc1628/Angular-Tou...