@@IDENTITY 是否总能保证插入语句执行后的ID是正确的?
来源:互联网 发布:二手玫瑰 知乎 编辑:程序博客网 时间:2024/05/17 02:14
这两天CSDNBlog问题不断啊!今天venjiang老大忙里偷闲去群里骂我们, 搞了个难题考我们。出题如下:
@@IDENTITY 是否总能保证插入语句执行后的ID是正确的?(这描述的不清晰哦,云里雾里的揣摩老大的意思ing....)
我想了想(因为我们一直使用inser into table ,select @@IDENTITY 这样的语句返回插入的数据ID,并且从没碰到过返回的ID与数据不匹配的情况),说:能,没碰到过不正确的时候!
venjiang接着说:如果数据访问很频繁,会不会出现我这边执行时,返回的是你那边插入的ID?
我想了一下说:不会。
venjiang就给我发了一段:@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 是相似的函数,因为他们都返回插入到表的 IDENTITY 列的最后一个值。
@@IDENTITY 和 SCOPE_IDENTITY 可以返回当前会话中的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。
细细一看,感觉使用@@IDENTITY还真没准会出现venjiang说的那种情况!
接着venjiang给我发了一个触发器:(不巧插入代码有错误,只好直接粘贴代码了)
CREATE TABLE t6(id int IDENTITY);
CREATE TABLE t7(id int IDENTITY(100,1));
GO
CREATE TRIGGER t6ins ON t6 FOR INSERT
AS
BEGIN
INSERT t7 DEFAULT VALUES
END;
GO
--End of trigger definition
SELECT * FROM t6;
--id is empty.
SELECT * FROM t7;
--ID is empty.
--Do the following in Session 1
INSERT t6 DEFAULT VALUES;
SELECT @@IDENTITY;
/*Returns the value 100. This was inserted by the trigger.*/
从这个触发器代码看,结合对@@IDENTITY的介绍,看来某些情况下@@IDENTITY返回ID的还真可能牛头不对马嘴。
- @@IDENTITY 是否总能保证插入语句执行后的ID是正确的?
- nutz执行插入操作后,返回插入后的Id
- PHP如何获取刚插入数据的ID 和判断SQL语句是否成功执行
- C#进行SQL执行Insert插入语句后返回新增行的ID
- insert into 后获得自动插入的id(select @@identity)
- insert into 后获得自动插入的id(select @@identity)
- insert into 后获得自动插入的id(select @@identity)
- insert into 后获得自动插入的id(select @@identity)
- mysql获取执行插入数据后的id
- mybatis插入语句后获取对应的id
- 怎样才能保证硬件板子和 boot loader 的执行环境是正确的?
- 太好了执行完sql(insert)后 用@@identity 返回刚插入记录ID
- select @@identity的应用(得到刚插入数据的ID)
- mysql语句获得插入语句的ID
- SQL Insert into 语句插入后返回新插入的自动增长ID
- @@identity的作用是返回最后插入的标识值
- php 获取mysql中插入的id 和 sql语句查看是否有重复
- Oracle中存储过程执行大的Sql语句时如何查看sql是否正确
- Linux I2C核心、总线与设备驱动
- AOP技术研究
- iBATIS.NET Tips & Tricks(1) : 使用Nullable类型
- 学习SQL SERVER的存储过程----之一认识存储过程语法
- Linux登陆问题请教
- @@IDENTITY 是否总能保证插入语句执行后的ID是正确的?
- 带有返回值的oracle 存储过程 大 | 中 | 小
- 一个希腊富翁说他的成功之路
- 突破固有思维方式
- C#开发经验技巧宝典--免费试读
- .NET WinForm程序,用中文输入法输入字符时,重复触发OnKeyPress消息问题
- 下午闹了个小笑话...
- 无聊的msn机器人编程大赛
- 字符串类型转换合集(1)