SQL点滴18—SqlServer中的merge操作,相当地风骚   今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有洞天,原来是另外一个sql关键字,t-sql的语法还是相当地丰富的.本篇是一篇学习笔记,没有什么新意,这里给出technet上的地址连接供大家参考权威:http://technet.microsoft.com/zh-cn/library/bb510625.aspx,这里具体的语法…
单独使用Mybaits,而没有集成Spring的话,执行insert.update和delete操作是不会自动提交的,即执行语句后不会在数据库有对应的数据变化. 解决这样的方法就是打开自动提交开关,在创建session时,输入参数为true即可: try { InputStream inputStream = Resources.getResourceAsStream(resource); // 创建工厂 sqlSessionFactory = new SqlSessionFactoryBuil…
merge into的形式:    MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] and [...]...)      WHEN MATCHED THEN          [UPDATE sql]      WHEN NOT MATCHED THEN          [INSERT sql]   作用:判断B表和A表是否满足ON中条件,如果满足则用B表去更新A表,如果不满足…
方法:org.jeecgframework.core.common.dao.jdbc.SimpleJdbcTemplate.batchUpdate     原理: 基于springjdbc封装,批量提交 在spring batch中,我们经常使用spring提供的jdbcTemplate进行数据库操作. 假设有一张表People.我们需要插入多条数据.处理的方法有两种: 第一种方法是对每一个数据,都执行一直insert命令: jdbcTemplate.update(INSERT_PEOPLE_Q…
以前只用过在insert完以后利用select @@IDENTITY返回主键ID,最近在做微信公众平台,遇到一个需求是在帮绑定万微信openid后自动完成登陆,这就需要update以后返回主键ID,查了一些资料找到了output这一解决方案. update [SmartPromoter] set [Name]='aaaaaaaa' output DELETED.[ID] where [Mobile]='18669698888' 经测试,insert.update.delete都可以返回主键ID…
ADO.NET 在发送SQL语句到SQL Server数据库后,怎么知道真正INSERT,UPDATE,DELETE了多少行数据呢? 使用SQL Server内置的全局变量@@ROWCOUNT即可,@@ROWCOUNT可以返回在当前数据库连接(SqlConnection)中,执行的上一条SQL语句影响了多少行数据,使用示例如下所示: INSERT INTO [dbo].[Person]([PersonCode],[Name],[Age],[City]) VALUES (N,N'Beijing')…
Merge是一个非常有用的功能,类似于MySQL里的insert into on duplicate key. Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一个表同时执行inserts和updates操作. 当然是update还是insert是依据于你的指定的条件判断的,Merge into可以实现用B表来更新A表数据,如果A表中没有,则把B表的数据插入A表. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表…
Update操作一定是先Delete再Insert吗? Update在数据库中的执行是怎么样的?“Update操作是先把数据删除,然后再插入数据”.在网上看了很多也都是这么认为的.但在查阅到一些不同看法的时候我进行了一些验证,发现还有其它的情况. 这里我分三种情况来讲: 1.更改没有索引列的字段,更改前和更改后的字符串长度一样:2.更改没有索引列的字段,更改后比更改前的字符串长:3.更改聚集索引字段. 先准备好数据,以便后面进行对比. 一.创建表.索引和数据: --创建表MyTable1 IF…
今天碰到了一个奇怪的问题,是关于Oracle一个事务中的Insert和Update语句的执行顺序的问题. 首先详细说明下整个过程: 有三张表:A,B,C,Java代码中有一段代码是先在表A中插入一条数据,然后再更新表B的两个字段,更新的两个字段是特定值.并且插入和更新在一个事务中. 有个需求需要在表A添加一个Insert的行级触发器,在触发器里,插入表A一行记录后去表B查看更新的两个字段是否满足特定条件, 如果表B的两个字段同时等于特定值,则把表A和表B的数据整合下放到表C.触发器的初衷就是这样…
update tableA a,(select a.netbar_id,sum(a.reward_amt) reward_amt from tableB a group by a.netbar_id) b set a.transfer_amt=b.reward_amt where a.netbar_id=b.netbar_id; 执行该语句时要注意,因为 select a.netbar_id,sum(a.reward_amt) reward_amt from tableB a group by…