- 浏览: 1213421 次
- 性别:
- 来自: 广州
博客专栏
-
Apache CXF使用s...
浏览量:109945
文章分类
- 全部博客 (189)
- Spring (13)
- Hibernate (10)
- liferay portal (3)
- Java (18)
- 数据库 (32)
- JS (12)
- Eclipse (16)
- Log4j (3)
- 我的收藏夹 (8)
- FF and IE (2)
- Groovy Grails (0)
- Web Service (16)
- Quartz (6)
- Tomcat (8)
- Linux (4)
- xml (4)
- Silverlight (1)
- Flex (10)
- JBoss (4)
- EJB (2)
- WAS(webSphere) (5)
- DOS命令 (2)
- JSON (2)
- Maven (1)
- OThers (1)
- SVN (1)
- iBatis (4)
- OS (1)
- 问题解决 (8)
- 待看文章 (2)
- 多线程 (2)
- 代码收藏(即拿即用工具类) (5)
- Socket (2)
- Android (4)
- 其他 (1)
- python (1)
- Genymotion (1)
最新评论
-
a807966224:
还是 多谢楼主 总结的挺好的 !!!
CXF 入门:创建一个基于SOAPHeader的安全验证(CXF拦截器使用) -
a807966224:
然后 通过 SOAPMessage.getHeader(qna ...
CXF 入门:创建一个基于SOAPHeader的安全验证(CXF拦截器使用) -
a807966224:
我也是接触这东西不久,QName qname = new QN ...
CXF 入门:创建一个基于SOAPHeader的安全验证(CXF拦截器使用) -
a807966224:
楼主 不知道你有没有出现 从headers 里取出来长 ...
CXF 入门:创建一个基于SOAPHeader的安全验证(CXF拦截器使用) -
xdc0209:
兄弟呀,报错啦 2011-12-15 13:27:15 n ...
Hibernate+EhCache配置二级缓存
Sybase 中不支持scope_identity
在sybase中无IDENT_CURRENT函数,而是next_identity(table)
在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。如果语句触发了一个或多个触发器,该触发器又执行了生成标识值的插入操作,那么,在语句执行后立即调用 @@IDENTITY 将返回触发器生成的最后一个标识值。如果对包含标识列的表执行插入操作后触发了触发器,并且触发器对另一个没有标识列的表执行了插入操作,则 @@IDENTITY 将返回第一次插入的标识值。出现 INSERT 或 SELECT INTO 语句失败或大容量复制失败,或者事务被回滚的情况时,@@IDENTITY 值不会恢复为以前的设置。
如果语句和事务失败,它们会更改表的当前标识,从而使标识列中的值出现不连贯现象。即使未提交试图向表中插入值的事务,也永远无法回滚标识值。例如,如果因 IGNORE_DUP_KEY 冲突而导致 INSERT 语句失败,表的当前标识值仍然会增加。
@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 是相似的函数,因为他们都返回插入到表的 IDENTITY 列的最后一个值。
@@IDENTITY 和 SCOPE_IDENTITY 可以返回当前会话中的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。
IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 可以返回任何会话和任何作用域中为特定表生成的标识值。
@@IDENTITY 函数的作用域是执行该函数的本地服务器上的当前会话。此函数不能应用于远程或链接服务器。若要获得其他服务器上的标识值,请在远程服务器或链接服务器上执行存储过程,并使(在远程或链接服务器的环境中执行的)该存储过程收集标识值,并将其返回本地服务器上的发出调用的连接。
以下示例向包含标识列 (LocationID
) 的表中插入一行,并使用 @@IDENTITY
显示新行中使用的标识值:
GO
--Display the value of LocationID in the last row in the table.
SELECT MAX(LocationID) FROM Production.Location;
GO
INSERT INTO Production.Location (Name, CostRate, Availability, ModifiedDate)
VALUES ('Damaged Goods', 5, 2.5, GETDATE());
GO
SELECT @@IDENTITY AS 'Identity';
GO
--Display the value of LocationID of the newly inserted row.
SELECT MAX(LocationID) FROM Production.Location;
GO
数据库
|
获取新增主键的查询语句
|
DB2
|
IDENTITY_VAL_LOCAL()
|
Informix
|
SELECT dbinfo('sqlca.sqlerrd1') FROM <TABLE>
|
Sybase
|
SELECT @@IDENTITY
|
SqlServer
|
SELECT SCOPE_IDENTITY()或SELECT @@IDENTITY
|
MySql
|
SELECT LAST_INSERT_ID()
|
HsqlDB
|
CALL IDENTITY()
|
Cloudscape
|
IDENTITY_VAL_LOCAL()
|
Derby
|
IDENTITY_VAL_LOCAL()
|
PostgreSQL
|
SELECT nextval('<TABLE>_SEQ')
|
补充:
我们要慎用@@IDENTITY,原因是 @@IDENTITY 它总是获取最后一条变更数据的自增字段的值,
而忽略了进行变更操作所在的范围约束。比如,我有表 A 和表 B 两个表,现在我在表 A 上定义了一个Insert触发器,当在表 A 中插入一条数据时,自动在表 B 也插入一条数据。此时,大家注意,有两个原子操作:在A中插入一条数据, 接着在B中随后插入一条数据。
现在我们想下,假设上面表 A 和表 B 都有IDENTITY自增域,那么我们在表 A 插入一条数据后,使用了 SELECT @@IDENTITY 输出时,输出的到底是 A 还是 B 的自增域的值呢? 答案很明显,是谁最后插入就输出谁,那么就是 B 了。于是,我本意是想得到 A 的自增域值,结果得到了 B 的自增域值,一只 BUG 随之诞生,搞不好还会影响到整个系统数据的混乱。
因此,对于这种情况,建议大家慎用 @@IDENTITY,而尽量采用 SCOPE_IDENTITY() 函数替换之。SCOPE_IDENTITY() 也是得到最后一条自增域的值,但是它是仅限在一个操作范围之内,而不@@IDENTITY 是取全局操作的最后一步操作所产生的自增域的值的
IDENT_CURRENT (Transact-SQL)
返回为指定的表或视图生成的最后一个标识值。所生成的最后一个标识值可以针对任何会话和任何作用域。
出现错误时或调用方没有权限查看对象时,将返回 NULL。
在 SQL Server 中,用户只能查看其拥有的安全对象的元数据,或者已对其授予权限的安全对象的元数据。这意味着,如果用户对对象没有任何权限,则元数据生成的内置函数(如 IDENT_CURRENT)可能返回 NULL。有关详细信息,请参阅元数据可见性配置和元数据可见性故障排除。
IDENT_CURRENT 类似于 SQL Server 2000 标识函数 SCOPE_IDENTITY 和 @@IDENTITY。这三个函数都返回最后生成的标识值。但是,上述每个函数中定义的“最后”的作用域和会话有所不同。
-
IDENT_CURRENT 返回为某个会话和用域中的指定表生成的最新标识值。
-
@@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值。
-
SCOPE_IDENTITY 返回为当前会话和当前作用域中的某个表生成的最新标识值。
如果 IDENT_CURRENT 值为 NULL(因为表从未包含行或已被截断),IDENT_CURRENT 函数将返回种子值。
如果语句和事务失败,它们会更改表的当前标识,从而使标识列中的值出现不连贯现象。即使未提交试图向表中插入值的事务,也永远无法回滚标识值。例如,如果因 IGNORE_DUP_KEY 冲突而导致 INSERT 语句失败,表的当前标识值仍然会增加。
请谨慎使用 IDENT_CURRENT 来预报下一个生成的标识值。由于其他会话执行的插入,实际生成的值可能与 IDENT_CURRENT 加上 IDENT_INCR 不同。
A. 返回为指定表生成的最后一个标识值
以下示例返回为 AdventureWorks2008R2 数据库中的 Person.Address 表生成的最后一个标识值。
USE AdventureWorks2008R2; GO SELECT IDENT_CURRENT ('Person.Address') AS Current_Identity; GO
B. 比较 IDENT_CURRENT、@@IDENTITY 和 SCOPE_IDENTITY 返回的标识值
以下示例将显示由 IDENT_CURRENT、@@IDENTITY 和 SCOPE_IDENTITY 返回的不同标识值。
USE AdventureWorks2008R2; GO IF OBJECT_ID(N't6', N'U') IS NOT NULL DROP TABLE t6; GO IF OBJECT_ID(N't7', N'U') IS NOT NULL DROP TABLE t7; GO 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 id FROM t6; --IDs empty. SELECT id 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.*/ SELECT SCOPE_IDENTITY(); /* Returns the value 1. This was inserted by the INSERT statement two statements before this query.*/ SELECT IDENT_CURRENT('t7'); /* Returns value inserted into t7, that is in the trigger.*/ SELECT IDENT_CURRENT('t6'); /* Returns value inserted into t6. This was the INSERT statement four statements before this query.*/ -- Do the following in Session 2. SELECT @@IDENTITY; /* Returns NULL because there has been no INSERT action up to this point in this session.*/ SELECT SCOPE_IDENTITY(); /* Returns NULL because there has been no INSERT action up to this point in this scope in this session.*/ SELECT IDENT_CURRENT('t7'); /* Returns the last value inserted into t7.*/
发表评论
-
解决sybase:Net-Lib protocol driver call to connect two endpoints failed
2014-08-08 17:11 469715:43:20.717 Program ) ct_con ... -
解决:Connections could not be acquired from the underlying database!
2013-07-30 14:31 292594og4j:WARN See http://logging. ... -
解决:Starting MySQL....The server quit without updating PID file
2013-01-21 12:10 2227控制台异常: Starting MySQL....The ... -
ibatis-2.3.0.677增加对c3p0连接池的支持
2013-01-04 17:50 30571,在com.ibatis.sqlmap.en ... -
Mysql避免全表扫描sql查询优化 .
2012-12-07 13:29 5049对查询进行 ... -
inux下mysql的root密码忘记解决方
2012-10-15 11:53 1020FROM: http://www.cnblogs.com/a ... -
解决: Failed to obtain license(s) for ASE_CORE feature from license file(s)
2012-10-15 10:34 4409兔年第一个工作日,本打算收收利市、聊聊春节见闻就过去了,没想 ... -
解决Using locale name "zh_CN" defined in environment variable LANG
2012-09-06 13:07 2671The context allocation routine ... -
Sybase ASE ddlgen导出表结构
2012-08-31 13:22 2344事先配置好必要的环境变量,如果有则不用 export SYB ... -
修改sybase字符集排序
2012-08-31 13:14 1805sp_configure "default s ... -
bcp命令详解
2012-07-31 13:47 3331导入(导出把in改为out即可) bcp 数据库名..表 ... -
解决can't open a connection to site 'syb_backup'
2012-07-31 13:45 3329今天在恢复一个sybase数据库备份时,在执行load ... -
PowerDesigner15官方正式版注册补丁
2012-01-09 18:31 1337PowerDesigner15官方正式版注册补丁 -
SELECT INTO FROM与INSERT INTO SELECT 语法
2011-12-28 15:04 22701.INSERT INTO SELE ... -
Sybase数据库优化手册
2011-12-24 22:56 2411FROM :baidu wen ku 目 录 ... -
Sybase 数据库查询索引优化
2011-12-24 22:43 2734Sybase 数据库查询索引优化 一、实验目的 ... ... -
如何让你的SQL运行得更快
2011-12-24 21:56 1350人们在使用SQL时往往 ... -
数据库设计中的14个技巧
2011-12-24 21:40 1146FROM: http://blog.csdn.net/s ... -
解决:Cannot create PoolableConnectionFactory(Sybase)
2011-12-22 13:54 26411,首先确定数据库正常启动并且可以访问 2,程序里出现此问题 ... -
解决:mysql 忘记密码
2011-12-11 11:23 1134FROM:http://yaoyanzhu.itey ...
相关推荐
数据库中有张表User,字段是ID和Name,ID自增。 利用存储过程实现插入时返回当前的行数 代码如下: CREATE PROC Proc_Insert... 您可能感兴趣的文章:@@IDENTITY与SCOPE_IDENTITY()sql添加数据后返回受影响行数据sqlse
在sql语句后使用 SCOPE_IDENTITY() 当然您也可以使用 SELECT @@IDENTITY 但是使用 SELECT @@IDENTITY是去全局最新. 有可能取得值不正确. 示例: 代码如下:insert into dbo.SNS_BlogData(userName) values(‘jiangyun...
#Scope该项目的范围是提供基于Cache数据库的ASP.NET Identity。 ASP.NET Identity是用于构建ASP.NET Web应用程序的新成员系统。 ASP.NET Identity允许您向应用程序添加登录功能,并可以轻松自定义有关已登录用户的...
= SCARD_SCOPE_USER && dwScope != SCARD_SCOPE_TERMINAL && dwScope != SCARD_SCOPE_SYSTEM && dwScope != SCARD_SCOPE_GLOBAL) { *phContext = 0; return SCARD_E_INVALID_VALUE; } /* * Unique ...
IdentityScope represents a scope for Identity objects.
AUTO 生成器,适用与可移值的应用,多个@Id可以共享同一个 identifier生成器,只要把generator属性设成相同的值就可以。通过@SequenceGenerator 和 @TableGenerator 可以配置不同的 identifier 生成器。 ...
FIPS 201 [FIPS], Personal Identity Verification (PIV) for Federal Employees and Contractors, defines procedures for the PIV lifecycle activities including identity proofing, registration, PIV Card ...
FIPS 201 [FIPS], Personal Identity Verification (PIV) for Federal Employees and Contractors, defines procedures for the PIV lifecycle activities including identity proofing, registration, PIV Card ...
Elixir客户演示应用 这是一个非常简单的应用程序,可以使用客户端库在Curity Identity Server中测试...=> "dcde70ab-4a0f-43ef-8d98-d7b36d0ed17a", "expires_in" => 300, "scope" => "", "token_type" => "bearer"}
The book’s broad scope, depth of coverage and focus on key philosophical positions and arguments make it an indispensable text for those teaching or studying philosophy of mind and psychology....
Chapter 14: Scope of a Managed Object Chapter 15: Mixed Mode Chapter 16: Equality and Identity Chapter 17: Abstract Classes Chapter 18: Nullptr Chapter 19: Declaring Properties Chapter 20: Strings ...
AuthTrail 跟踪Devise登录活动 :tangerine: 经过战斗测试 安装 将此行添加到您的应用程序的Gemfile中...identity -电子邮件地址 success -登录是否成功 failure_reason如果登录失败 user -如果登录成功用户 context -
引导任务,使ClojureScript测试变得快速,轻松并且与测试Clojure一致。 [crisptrutski/boot-cljs-test " 0.3.5-SNAPSHOT " ] ; ; latest release 入门 添加到build.boot并确保将测试添加到类路径。 (set-env! :...
descriptions C18) Descriptions and scope C23) Individual constants and function symbols C27) Exercises — 17 C28) Notes C29) 18 Intensional Objects 330 Contingent identity C30) Contingent identity ...
Scope Contents of This Book Online Companion Conventions Used in This Book Using Code Examples We'd Like to Hear from You Safari Enabled Acknowledgments Chapter 1. Apache Security ...
11.1.3. 关注对象标识(Considering object identity) 11.1.4. 常见问题 11.2. 数据库事务声明 11.2.1. 非托管环境 11.2.2. 使用JTA 11.2.3. 异常处理 11.2.4. 事务超时 11.3. 乐观并发控制(Optimistic ...
Covers how to create groups, modify group scope and type, and manage membership. Chapter 8, Computer Objects Covers creating computers, joining computers to a domain, resetting computers, and locating...