现在有一个需求,插入api调用日志表。然后,发起HTTP请求()请求时,需要带入日志表的id)。

简化无关的添加,SQL Server表格设计如下:

CREATE TABLE mylog (
id INT IDENTITY(1,1) PRIMARY KEY, -- 自增的主键
url NVARCHAR(255), -- 发起的路径和其他字段
flag INT DEFAULT 0, -- 执行状态
fguid NVARCHAR(36) -- 唯一编码
)

原本为用 @@IDENTITY 获取最近插入的记录,然后再发起请求,也没毛病。

INSERT INTO dbo.mylog
( url, flag )
VALUES ( N'请求的路径', -- url - nvarchar(255)
0 -- flag - int
)
DECLARE @id INT = @@IDENTITY -- 获取插入的ID
SELECT @id
-- 根据新增id,执行下一步

获取到了最近新增的日志记录的id。

于是,好些地方都调用这个方法。直到有一天,主管经过。看来我的代码。

主管:“如果在在执行这句话的过程中,其他地方也插入了记录。会怎么样?”

我回想了一下。我还以为它只是我本地的数据库,独属于我的一对一。我没想到他已经走向社会,需要应对繁杂的事务,切换着满足这么多人的需求。我是不是要给他加一个回滚的事务?

……

主管:“这个表,我就是为了解决唯一性的问题,加了一个字段——fguid”。

SQL  SERVER 有一个方法会随机生成唯一标识符——newID() 。我们可以根据唯一查关键字。

DECLARE @fguid NVARCHAR(36) = LOWER(NEWID())
INSERT INTO dbo.mylog
( url, flag, fguid )
VALUES ( N'', -- url - nvarchar(255)
0, -- flag - int
@fguid -- fguid - nvarchar(255)
)
DECLARE @id INT -- 获取插入的ID
SELECT @id = id FROM dbo.mylog WHERE fguid = @fguid
SELECT @id
-- 根据新增id,执行下一步

我:原来如此。学习了,学习了!谢谢。。不过,为什么要加 LOWER() ?

主管: 小写的看着比较舒服。

【SQL Server】获取表格插入的id(二)——newID()的更多相关文章

  1. SQL Server 2008性能故障排查(二)——CPU

    原文:SQL Server 2008性能故障排查(二)--CPU 承接上一篇:SQL Server 2008性能故障排查(一)--概论 说明一下,CSDN的博客编辑非常不人性化,我在word里面都排好 ...

  2. SQL Server获取指定行的数据

    SQL Server获取指定行(如第二行)的数据   --SQL Server获取指定行(如第二行)的数据-- --法一(对象法)-- select * from ( select * , numbe ...

  3. 09Microsoft SQL Server 表数据插入,更新,删除

    Microsoft SQL Server 表数据插入,更新,删除 向表中插入数据 INSERT INTO insert into tb1 values(0004,'张凤凤') insert into ...

  4. mysql 获取刚插入行id汇总

    mysql 获取刚插入行id汇总 我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但 ...

  5. SQL Server获取下一个编码字符串的实现方案分割和进位

        我在前一种解决方案SQL Server获取下一个编码字符实现和后一种解决方案SQL Server获取下一个编码字符实现继续重构与增强两篇博文中均提供了一种解决编码的方案,考虑良久对比以上两种方 ...

  6. SQL Server获取下一个编码字符实现继续重构与增强

        我在SQL Server获取下一个编码字符实现的博文中,虽然实现了这个问题,但是感觉维护起来比较麻烦,例如如果调整编码字符串的固定长度,就需要变更三个函数,这样的为何成本确实比较大.面向对象编 ...

  7. SQL SERVER获取数据库文件信息

        MS SQL SERVER 获取当前数据库文件等信息,适用于多个版本: SELECT dbf.file_id AS FileID , dbf.name AS [FileName] , s.fi ...

  8. SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据

    原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Se ...

  9. 常用脚本--SQL Server获取OS日志

    --=================================================== --SQL Server获取OS日志: ), ), ), ) select @start_d ...

  10. SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录

    本文主要向大家介绍了SQLServer数据库之SQL Server 获取本周,本月,本年等时间内记录,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. datediff(we ...

随机推荐

  1. 076_Master Detail 与Lookup

  2. K8S的 POD 生命周期

    pod的生命周期是从创建至终止的这段时间范围 Pod的创建 1.用户通过kubectl或其他api客户端提交需要创建的pod信息给apiServer 2.apiServer开始生成pod对象的信息,并 ...

  3. LogAgent —— etcd+kafka+zookeeper+go实现实时读取日志发送到kafka,并实现热加载配置读取的日志路径

    工具包目录结构: .├── conf│   ├── logAgent.ini│   └── logAgentConfig.go├── etcd│   └── etcd.go├── kafka│   └ ...

  4. python经典例题

    [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? num_list=[] cou=0 for i in range(1,5): for j in rang ...

  5. SingleFlight

    Go 语言扩展包中提供了另一种同步原语,它能够在一个服务中抑制对下游的多次重复请求.一个比较常见的使用场景是:我们在使用 Redis 对数据库中的数据进行缓存,发生缓存击穿时,大量的流量都会打到数据库 ...

  6. Java编码规范总结(腾讯)

    以下内容参考自:Java编码规范总结(腾讯+阿里)_pursue_vip的博客-CSDN博客_java编码规范 Java编码规范总结(参考腾讯编码规范) 一.java文件组织 文件组织规则:由于超过2 ...

  7. PY3多继承

    __author__ = "Alex Li"class A: def __init__(self): print("A")class B(A): pass #d ...

  8. XMind8破解,详细版(亲测)

    废话不多说,直接上料: 一.资源 百度网盘XMind8: 链接:https://pan.baidu.com/s/1h2DXkni4-POEpHyBqLxjwA 提取码:kqgy 破解补丁: 链接:ht ...

  9. GoLang之ACM控制台输入输出

    转自:https://blog.csdn.net/weixin_52690231/article/details/125436414

  10. 第三周day3

    第三周day3,星期三 所花时间:1h 代码量:48 博客量:1 了解知识:Button触发点击事件的三种实现方式,onClick.匿名内部类方式.接口方式.