现在有一个需求,插入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. Esp8266 Arduino PubSubClient连接阿里云老是返回rc=2错误的解决方案

    最近在用Esp8266 Arduino连接阿里云IOT的时候,服务器端老是返回rc=2 的错误! 用了MQTTfx模拟连接阿里云IOT没有问题,但是把同样的ClientID,UserName和Pass ...

  2. 使用NSIS打包软件

    平台和所需软件 平台: Windows 使用软件: NSIS https://nsis.sourceforge.io/Download HM NIS Edit https://sourceforge. ...

  3. C#中定时任务被阻塞问题

    目录 解决一个C#中定时任务被阻塞问题 1.摘要 2.C#中定时任务的最简方法 3.定时任务阻塞现象 4.阻塞现象原因分析 5.问题解决 1.摘要 本文会介绍一个C#中最简单定时任务的使用方法,以及会 ...

  4. python_基础_习题集(10.25更新)

    一.文件 1.利用文件充当数据库编写用户登录.注册功能 文件名称:userinfo.txt 基础要求: 用户注册功能>>>:文件内添加用户数据(用户名.密码等) 用户登录功能> ...

  5. Jmeter:随机类函数

    一.__Random 功能介绍:计算范围内的随机数 ${__Random(参数 1,参数 2,参数 3)} 参数 1:开始数字,包括在内 参数 2:结束数字,包括在内 参数 3:注册变量名称  二._ ...

  6. docker脚本自动化安装

    1.编译构建镜像编写一个.sh的脚本,用于在linux中构建已发布项目的镜像,构建成功之后再导出镜像------该镜像是docker-compose.yml中需要用到的镜像文件 功能:使用docker ...

  7. RabbitMQ 修改密码

    C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.14\sbin> rabbitmqctl.bat change_password adm ...

  8. Tomcat异常处理机制

    声明 源码基于Spring Boot 2.3.12中依赖的Tomcat 异常例子 tomcat中返回错误页面目前主要是以下两种情况. 执行servlet发生异常 程序中主动调用response.sen ...

  9. 从零搭建hadoop集群之zookeeper集群安装

    1. 从官方渠道获取对应的zookeeper的安装包 http://archive.apache.org/dist/zookeeper/ zookeeper-3.4.10.tar.g 2. 上传zoo ...

  10. 从零搭建hadoop集群之节点间免密登录

    我这里有三台虚拟机 分别是 hadoop01 hadoop02 hadoop03 1.所有节点切入到hadoop用户 2.分别再三个节点上输入 ssh-keygen 命令(输入命令后敲回车键三下)  ...