declare

v_id t.id%type;

begin

insert into t(id) values(seq.nextval) returning id into v_id;

end;

/

declare

v_id t.id%type;

begin

insert into t(id) values(seq.nextval) returning id into v_id;

end;

/

当插入一条记录时,我们很多时候都想马当前插入的主键返回出来.作为另一个操作的条件.如果主键是

自动生成的(大多数时候是这样),那么取回主键是一种比较困难的事.可能对于一些特殊的数据库必须把

insert into和select max(key)或什么序列当前值作为一个事务的原子来操作,但很多数据库(以及数据库操作环境)

并不能为你提供事务并发控制.所以如果多人同时操作,那么select max(key)很可能就不是你刚才insert的

那条记录.

在JDBC3.0中,已经可以直接返回insert 语句的主KEY和其它值,但目前只有mysql支持.oracl和sqlserver

的JDBC都不支持这个特性.而且如果离开JAVA平台就没有这个特性了.

详细读了oacle,sqlserver,mysql的文档,对上面三种数据库找到了以下解决方案,在java和非java平台都适用:

SQLServer:

INSERT INTO tableName (fieldList ...) values (valueList ...) SELECT @@IDENTITY AS aliasName;

这一句相当于执行查询操作,从结果集中getXXX(aliasName);就可以获取.

Oracle:

INSERT INTO tableName (fieldList ...) values (valueList ...) RETURNING [primaryKey INTO]:aliasName;

同上的方法可以获取.这两种方法都是数据库支持的sql语句,原以根本不存在并发冲突.

mysql:

没有找到可以绝对保证原子性的语句(谁知道反馈一下)

如果是在JAVA平台,可以直接利用 Statement的返回键特性.比较安全,在非java平台上,目前只能通过在同一会话中用

LAST_INSERT_ID([columnName])来获取,注意一定要在同一会话中.

mysql insert返回值_各种SQL Insert 返回值相关推荐

  1. sendmsg返回值_[求助]Sendmessage函数返回值

    各位老师好,请教一个问题,我有时候在编程的时候需要处理一些通过消息传遍过来的数据,这些数据每次里面有字符串,要是数字还好处理字符串就比较难处理, 我收集了5种消息传递字符串的方法,结果用着都不是让我很 ...

  2. python怎么返回布尔值_尝试从函数返回布尔值

    您需要将"return incomp1==True"替换为"return True".然后像这样调用door1函数"incomp1=door1(inc ...

  3. mysql智能提示插件_书写SQL语句的智能提示工具(SQL_Prompt_4 插件)

    书写sql语句也这么久(嘿嘿大概2年了吧),从最初的学习到现在,都期盼能向VS那样有智能的提示,我敲一个单词,他就提示!那该多好啊!又可以减少错误,也提高了开发效率.哎-没办法,身边的人也都这样敲,看 ...

  4. java二叉树求权值_二叉树中的权值是什么?

    展开全部 二叉树中的权值就是对叶子结点赋予的一个有意义的数量值. 一棵深度为k,且有2^k-1个节点的二叉树,32313133353236313431303231363533e58685e5aeb93 ...

  5. mysql insert 返回值是什么_各种SQL Insert 返回值

    declare v_id t.id%type; begin insert into t(id) values(seq.nextval) returning id into v_id; end; / d ...

  6. MySQL数据库常用命令_常用SQL语句及命令_MySQL常用语句

    文章目录 一.常用的 SQL 语句 (一)查看当前登录用户 (二)查看当前数据库 (三)如何查看全部用户? (四)创建数据库 (五)选择要操作的数据库 (六)创建表 (七)查看表的结构 (八)往表中插 ...

  7. mysql 名次语法规则_基于sql语句的一些常用语法积累总结

    1.当某一字段的值希望通过其它字值显示出来时(记录转换),可通过下面的语句实现:case Type when '1' then '普通通道' when '2' then '高端通道' end as T ...

  8. mysql select内部原理_数据库SQL SELECT查询的工作原理

    作为Web开发人员,虽并非专业的DBA,但我们总是离不开数据库.一般开发员只会应用SQL的四条经典语句:select,insert,delete,update.以至于从来没有研究过它们的工作原理,在这 ...

  9. server sql 中类型为bit应该插入什么值_关于SQL Server中bit类型字段增删查改的一些事...

    前言 本文主要给大家介绍了关于SQL Server中bit类型字段增删查改的一些事,话说BIT类型字段之前,先看"诡异"的一幕,执行Update成功,但是查询出来的结果依然是1,而 ...

最新文章

  1. 搜索和其他机器学习问题有什么不同?
  2. python解密md5值_Python之POST提交解密MD5
  3. 7 centos 查看程序文件数量_「动手打造家庭媒体网络平台」安装篇-centos搭建DLNA媒体服务...
  4. Idea中搭建Wildfly(JBoss)运行环境(Mac)
  5. 解决(springboot项目)mysql表名大写,造成jpa Table doesn't exist问题
  6. carbondata 1.1.0安装文档
  7. dom4j 解析xml
  8. 慢日志之一:开启mysql慢查询日志并使用mysqldumpslow命令查看,分析诊断工具之四...
  9. 安装ie11提示计算机安装了更新的版本,离线安装IE11浏览器提示quot;获取更新quot;解决方法 - 191路由网...
  10. 项目实训第一周第三篇
  11. asp.net会员卡管理系统VS开发sqlserver数据库web结构C#编程
  12. [图形学] 基于图像的照明:镜面反射
  13. 更新KB5005565补丁后win10局域网打印机不能共享打印
  14. PC epub阅读器推荐
  15. SpringBoot的国际化错误信息返回
  16. npm模块之opn使用教程(node **.js直接再浏览器中打开相应的文件)
  17. 计算机网申兴趣爱好怎么写,网申个人爱好如何填写?
  18. dcs程序流程图分析_常见DCS工艺流程图识别 教你正确读图
  19. 我的嵌入式linux开发步骤
  20. 三角脉冲信号的表达式_三角形脉冲.PPT

热门文章

  1. 计算机专业国考录取比例,国考招录中,报考人数近18万,有3类专业成功几率高...
  2. 创意几何点线面三角形孟菲斯海报banneer广告设计ai矢量背景素材
  3. 计算机设备管理器里面没有图像,设备管理器里没有图像设备怎么办?
  4. 含根式的定积分计算_定积分计算详细步骤
  5. hazelcast 搭建_Spring Boot集成Hazelcast实现集群与分布式内存缓存
  6. keystore was tampered with,or password was incorrect解决办法
  7. Dubbo,入门Demo案列使用,框架原理,Zookeeper的使用,安装监控中心和管理控制台,service,provider,comsumer三个项目的Demo
  8. Cass10.1独立地物简码识别功能
  9. S@Kura的PHP进阶之路(四)
  10. VMware虚拟机不能识别U盘 的解决方法