现在有一个需求,插入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. linux 清空catalina.out日志 不需要重启tomcat(五种方法)

    linux 清空catalina.out日志 不需要重启tomcat 1.重定向方法清空文件   [root@localhost logs]# du -h catalina.out  查看文件大小17 ...

  2. react框架-知识点(ref,, setState)

    react的思想:无必要勿增实体 1. ref 使用 myRef = React.createRef() <input ref={this.myRef}></input> 2. ...

  3. win10如何设置共享媒体流?

    一.win10设置媒体流共享   1 电脑开机后,点击右下角的"网络连接-网络和Internet设置".   2 进入设置界面后,点击"网络和共享中心".   ...

  4. keycloak 找出特定客户端权限的user 配置OTP

    背景:项目组中有用到keycloak给两个应用进行登录认证使用.其中有一个应用放在公网,安全部门同事说 不能直接账号密码登录,容易破解,需要进行二次验证. 刚好查到keycloak支持OTP(one ...

  5. 【转载】rename。给文件批量改名的python脚本

    https://www.bilibili.com/read/cv16146757 确认py版本:2.7, 3.6? 1 import os, sys, re, math, openpyxl, csv ...

  6. postgressql知识点、源码

    1.新增语法,tab键自动联想的代码位置. tab-complete.c中的函数pgsql_completion

  7. QString的一些使用技巧

    简介 QString 字符串被每个GUI程序所使用,不仅是用户界面,还有数据结构. C++原生提供两种字符串: 传统的C风格以'\0'结尾的字符数组和std::string类.与这些不同,QStrin ...

  8. python3.10.0字符串基础

    字符串支持 索引 (下标访问),第一个字符的索引是 0.单字符没有专用的类型,就是长度为一的字符串: >>> word = 'Python' >>> word[0] ...

  9. Python 画极坐标图

    需要用Python画极坐标等值线图,以下是所学的一些东西,特此记录 -------------------------------------------------- 翻译自 https://sta ...

  10. leetcode-152乘积最大子数组(两个转移方程的正确性证明)

    1.dp数组的含义 maxDP[i]中存储 以nums[i]为结尾元素的子数组的最大乘积minDP[i]中存储 以nums[i]为结尾元素的子数组的最小乘积 注意到:maxDP[i] >= mi ...