现在有一个需求,插入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. jenkins-构建触发器之定时构建和轮询 SCM

    前言 最近搭建自动化框架,跑自动化用例每次都得用手工点击构建任务,我们希望能每天固定时间跑,这样就不用管了,坐等收测试报告结果就行 定时构建语法 五颗星,中间用空格隔开 * * * * * 第一颗*表 ...

  2. flex_bison

    flex_bison flex flex词法分析器,可以利用正则表达式来生成匹配相应字符串的C语言代码,其语法格式基本同Lex相同.单词的描述称为模式(Lexical Pattern),模式一般用正规 ...

  3. 关于certutil的探究-文件下载+编码分块上传上传文件再合并

    何为certutil certutil.exe 是一个合法Windows文件,用于管理Windows证书的程序. 微软官方是这样对它解释的: Certutil.exe是一个命令行程序,作为证书服务的一 ...

  4. 【DM论文阅读杂记】复杂社区网络

    Paper Title Community Structure in Time-Dependent, Multiscale, and Multiplex Networks Basic algorith ...

  5. sxt_(015)_request处理表单数据及乱码

    一.request处理表单数据及乱码 1.1 处理单个表单数据用request.getParameter("x"); 1.2 处理多个表单(checkbox.select)数据用r ...

  6. Windows 分辨率改变引起WPF的适应问题

    系统分辨率变化,全屏WPF的UI出现没更新和白底之类的现象记录. 您可以使用SystemParameters.WorkArea.最初设置MainWindow的MaxHeight. 在MainWindo ...

  7. BundleFusion_Ubuntu_Pangolin 安装的一些error

    /usr/bin/ld: 找不到 -lEigen3::Eigen 解决方法:find_package(Eigen3 REQUIRED)为list(APPEND CMAKE_INCLUDE_PATH & ...

  8. wget 多线程下载 mwget 工具安装

    # for centos mini #yum -y install gcc-c++ intltool libssl-dev yum -y install gcc-c++ intltool openss ...

  9. (0514)芯王国-志锐-Sd卡高速控制-AXI验证

    (1)commit (2)core  (3)generate (4)struct  结构体 (5)

  10. class_task

    #!/usr/bin/python # -*- coding: UTF-8 -*- class Task():     _cls_name = "cls name"     def ...