精华内容
下载资源
问答
  • oracle数据库中的update语句的用法

    万次阅读 2017-06-27 18:41:24
    在表t_test设置第二条记录(bs为2)password为'***'。 update t_test t   set t.password = '***'   where t.bs = 2;   2、set多个字段 在表t_test设置第一条记录(bs为1)password为'*'、remark...
    测试
     
    1、set一个字段
    在表t_test中设置第二条记录(bs为2)的password为'***'。
    update t_test t 
       set t.password = '***' 
     where t.bs = 2;
     
    2、set多个字段
    在表t_test中设置第一条记录(bs为1)的password为'*'、remark为'*'。
    update t_test t 
       set t.password = '*', t.remark = '*' 
     where t.bs = 1;
     
    3、set null值
    在表t_test中设置第三条记录(bs为3)的password为null、remark为null。
    update t_test t 
       set t.password = null, t.remark = null 
     where t.bs = 3;
     
    这个是按照标准语法写的,在不同的数据库系统中,update还有更多的写法,但是标准写法都是支持的。以上三个例子为了说明情况,每次都更新一行。在实际中,可以通过where语句约束来控制更新行数。
    展开全文
  • 数据库中for update的使用

    千次阅读 2016-04-18 15:35:10
    最近,一直在做一些...这里我说一下我们在数据库层面上来完成数据之间同步问题:数据库中有一条数据这条数据在多线程情况下只能有一个线程来执行,当此线程执行完成后另外一个线程就会自动放弃这个任务。 实现

    最近,一直在做一些关于并发的应用程序,如果在单个Java进程中可以通过synchronized关键字来保证线程之间的资源竞争和同步问题。

    但是如果在多个Java进程之间需要完成数据之间的获取和使用问题就比较麻烦。

    这里我说一下我们在数据库层面上来完成数据的之间的同步问题:数据库中有一条数据这条数据在多线程的情况下只能有一个线程来执行,当此线程执行完成后另外一个线程就会自动放弃这个任务。

    实现过程如下:

    @Transactional(rollbackFor=Exception.class)
    	public void run() {
    		logger.info("锁测试开始...");
    		PayCenterTTaskCtl ttaskCtl = ttask.selectForUpdata("20160418114426", "11");
    		if(null != ttaskCtl){
    			PayCenterTTaskCtl ctl = new PayCenterTTaskCtl();
    			ctl.setTASK_SEQ("20160418114426");
    			ctl.setTASK_TYPE("11");
    			ctl.setTASK_STAT("00");
    			int updateCnt = ttask.updateByTaskTypeAndSeq(ctl);
    			logger.info("更新行数{}", updateCnt);
    		}
    		logger.info("锁测试结束。查询出对象{}", ttaskCtl);
    	}
    selectForUpdata对应SQL:select * from table_name where TASK_SEQ = #{0} AND TASK_TYPE = #{1} AND task_stat='01' for update
    updateByTaskTypeAndSeq对应SQL:update table_name set task_stat='00' where TASK_SEQ = #{0} AND TASK_TYPE = #{1}

    上面方法的执行日志如下:

    2016-12-18 15:12:39,813 [Thread-6]  INFO (TestServiceImpl.java:48) - 锁测试开始...

    2016-12-18 15:12:39,824 [Thread-5]  INFO (TestServiceImpl.java:48) - 锁测试开始...

    2016-12-18 15:12:39,851 [Thread-5] DEBUG (BaseJdbcLogger.java:139) - ==>  Preparing: select * from T_TASK_CTL where TASK_SEQ = ? AND TASK_TYPE = ? AND task_stat='01' for update 
    2016-12-18 15:12:39,855 [Thread-6] DEBUG (BaseJdbcLogger.java:139) - ==>  Preparing: select * from T_TASK_CTL where TASK_SEQ = ? AND TASK_TYPE = ? AND task_stat='01' for update 
    2016-12-18 15:12:39,990 [Thread-6] DEBUG (BaseJdbcLogger.java:139) - ==> Parameters: 20160418114426(String), 11(String)
    2016-12-18 15:12:39,990 [Thread-5] DEBUG (BaseJdbcLogger.java:139) - ==> Parameters: 20160418114426(String), 11(String)
    2016-12-18 15:12:40,049 [Thread-6] DEBUG (BaseJdbcLogger.java:139) - <==      Total: 1

    2016-12-18 15:12:40,087 [Thread-6] DEBUG (BaseJdbcLogger.java:139) - ==>  Preparing: update T_TASK_CTL SET TASK_TYPE = ? ,TASK_STAT = ? ,UPD_TIME = SYSDATE ,AFFIX1 = ? where TASK_SEQ = ? AND TASK_TYPE = ? 
    2016-12-18 15:12:40,087 [Thread-6] DEBUG (BaseJdbcLogger.java:139) - ==> Parameters: 11(String), 00(String), null, 20160418114426(String), 11(String)
    2016-12-18 15:12:40,094 [Thread-6] DEBUG (BaseJdbcLogger.java:139) - <==    Updates: 1
    2016-12-18 15:12:40,095 [Thread-6]  INFO (TestServiceImpl.java:56) - 更新行数1
    2016-12-18 15:12:40,095 [Thread-6]  INFO (TestServiceImpl.java:58) - 锁测试结束。查询出对象任务类型:11,任务编号:20160418114426,任务状态:01,任务总笔数:0,成功笔数:0,失败笔数:0,任务开始时间:Mon Apr 18 11:44:26 CST 2016,任务结束时间:null,更新时间:Mon Apr 18 15:18:27 CST 2016,附加字段1:null,附加字段2:10.63.32.6:34,附加字段3:null

    2016-12-18 15:12:40,107 [Thread-5] DEBUG (BaseJdbcLogger.java:139) - <==      Total: 0
    2016-12-18 15:12:40,107 [Thread-5] DEBUG (SqlSessionUtils.java:163) - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@60707666]
    2016-12-18 15:12:40,108 [Thread-5]  INFO (TestServiceImpl.java:58) - 锁测试结束。查询出对象null

    从上面日志可以看出线程6执行SQL(selectForUpdata)先于线程5,当线程6执行时线程5一直处于等待状态,当线程6执行完成并提交事务之后线程5开始查询,可以看出查询结果为0,所以没有更新记录的操作。


    从上面的过程我得到如下结论:

    1、如果需要使用for update就需要在使用前显示的启动事务,处理完成后显示的提交事务,不然下一个线程获取到此数据后会将永远等待;

    2、for update执行的时为了防止多操作数据,应该在语句中添加一个状态,即时两个线程同时访问到一条数据也不会出现多处理的问题;

    展开全文
  • oracle和mysql数据库的批量update在mybatis配置不太一样:oracle数据库: 1、一次执行多条SQL语句 <update id="department.batchSort" parameterType="List"> begin <foreach collection="list" item="item

    oracle和mysql数据库的批量update在mybatis中配置不太一样:

    oracle数据库:
    1、一次执行多条SQL语句

            <update id="department.batchSort" parameterType="List"> 
                begin
                <foreach collection="list" item="item" index="index" separator=";">  
                        update base_department   
                        <set>
                            <if test="item.sort !=null">
                                sort=${item.sort},
                            </if>
                            <if test="item.name!=null">
                                name=${item.name},
                            </if> 
                       </set>
                        where id = ${item.id}
                 </foreach>  
                 ;end;
            </update>
    2、这种方式修改的字段值都是一样的。
    
        <update id="department.batchSort" parameterType="List">    
            update  update base_department 
                <set>
                    sort=${item.sort},
                    name=${item.name},
                </set>   
            where id in     
            <foreach collection="list" index="index" item="item" open="("separator=","close=")">    
                #{item.id}    
            </foreach>  
    </update>

    注意:set语句之后一定别忘记加逗号

    mysql数据库:

    mysql数据库采用一下写法即可执行,但是数据库连接必须配置:&allowMultiQueries=true

    例如:jdbc:mysql://127.0.0.1:3306/db_cas?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true

    展开全文
  • 之前已经建立了模型,并且使用了 Add-Migration MyFirstMigration  命令生成了迁移文件,然后更新了模型。 不要删除原来的迁移文件,执行 Add-Migration MyFirstMigration2 ...每次更新数据库中的模型时都递增这个数据

    之前已经建立了模型,并且使用了

    Add-Migration MyFirstMigration 

    命令生成了迁移文件,然后更新了模型。

    不要删除原来的迁移文件,执行

    Add-Migration MyFirstMigration2

    注意MyFirstMigration之后的数字2

    每次更新数据库中的模型时都递增这个数据

    展开全文
  • 数据库中Select For update语句解析

    万次阅读 2017-10-25 00:13:17
    ———————————...Oracle for update行锁键字: oracle for update行锁  SELECT…FOR UPDATE 语句语法如下:  SELECT … FOR UPDATE [OF column_list][WAIT n|NOWAIT][SKIP LOCKED]; 其中:  OF 子
  • oracle和mysql数据库的批量update在mybatis配置不太一样:oracle数据库: ;" separator=";"> update test <set>
  • Sqlite数据库中的Update语句,你能了解多少呢?因为这种微型数据库用到的语句非常少,所以可能我们不会经常的用到。但要想真正的玩转sqlite这种微型数据库,掌握这些语句的用法是非常重要的。本文我们就来介绍一下...
  • Sqlite数据库中的Update语句,你能了解多少呢?因为这种微型数据库用到的语句非常少,所以可能我们不会经常的用到。但要想真正的玩转sqlite这种微型数据库,掌握这些语句的用法是非常重要的。本文我们就来介绍一下...
  • MySQL数据库insert和update语句

    千次阅读 2016-04-11 10:16:19
    MySQL数据库insert和update语句 ...在标准SQL有3个语句,它们是INSERT、UPDATE以及DELETE。 用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说SELECT语句,另外一种就是更新
  • 这个oracle插入带有单引号字符串问题。单引号是用来标识字符串。如果在字符串含有单引号。...'King''s Road' ,插入数据库的结果就是King's Road。在程序可以用替换函数将单引号替换成2个单引号。
  • 在从MySQL迁移数据库到达梦数据库中,原来的MySQL中的mybatis语句:ON DUPLICATE KEY UPDATE 更新或插入进行改造可以参考一下形式: 1、针对一条数据的更新或者插入可以这样执行: MERGE INTO t_person T1 ...
  • 更新数据库的代码: procedure TFormPatientTemplate.Button1Click(Sender: TObject); var  xmlString : string;  xml_document:IXMLDOMDocument;  newctrl_list : IXMLDOMNodeList;  newctrl_node ...
  • android sqlite数据库有一给字段,这个字段里面是null没有值,点击某些操作后我现在需要在代码循环给这个字段写入数字序号0,1,2,3,4,5,6这样的顺序 ,我的update 语句怎么写,循环是不是直接 for里面直接i就可以了...
  • 详解MySQL数据库insert和update语句

    千次阅读 2018-01-05 11:37:32
    SQL语句中的更新语句update是最常用的语句之一,言外之意,就是对数据进行修改。在标准的SQL中有3个语句,它们是INSERT、UPDATE以及DELETE。 用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的...
  • 在accessupdate语句不能有子查询,如不允许如下语句出现: UPDATE tblA SET lngID= (SELECT lngID FROM tblB WHERE strName=nihao)这样就需要另想办法解决问题。 解决方案:A。可以用update另外语法解决...
  • SQLserver 数据库中update select from 语句

    万次阅读 2018-04-03 14:31:44
    UPDATE TJ_TJXMB n SET n.DJ = SELECT b.unit_price FROM his_system_cure_item_info b WHERE b.item_name = n.MC error错误 [Err] 42000 - [SQL Server]Incorrect syntax near 'n'. 正确; ...
  • 数据库alter,Update语句用法

    千次阅读 2017-10-18 10:17:22
    数据库alter用法:http://blog.csdn.net/wyswlp/article/details/8881103 。 数据库字符串要使用中文引号,第二条才是正确引号。
  • 需求:根据project_id分组,project_lease_item_id排序对seq_number从1递增更新整个表中的数据 一、下图为更新之前的数据:  二、更新数据库的代码 数据库用的是oracle: 方案一: update prj_project_lease_...
  • MySQL_(Java)使用JDBC向数据库发起查询请求 传送门  MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门  MySQL_(Java)使用JDBC向数据库中删除(delete)数据 传送... MySQL数据库中的数据,数据库名gar...
  • 本文主要向大家介绍了Oracle数据库之oracle update set select from 关联更新,通过具体内容向大家展现,希望对大家学习Oracle数据库有所帮助。  工作有个需求,现在新表有一些数据跟老表基本一样,这样只...
  • MySQL timestamp自动更新时间分享 ...在mysqltimestamp数据...通常表会有一个Create date 创建日期字段,其它数据库均有默认值选项。MySQL也有默认值timestamp,但在MySQL,不仅是插入就算是修改也会
  • 一次mysql数据库从库UPDATE失败分析

    千次阅读 2017-10-18 14:12:56
    场景:昨天开发组反应从库和主库数据同步有问题,在主库进行更新过数据,从库没有更新,导致他们根据触发器变化数据不准确。 起先接到这个问题,我把惊着了,按理说mysql从库版本远远高于主库,...
  • 关于数据库中每个表中,或者会有需要记录表中数据修改时间.这个时候应该怎么做呢.当然我们常规做法就是,首先在数据库中添加两个字段 然后在实体类中添加两个属性 private Date createTime; private Date update...
  • 简单查询 选择全列 select * from dmhr.department;...紧跟列名,也可以在列名和别名之间加入关键字 AS ,以便在别名包含空格或特殊字符并区分大小写 select employee_name,salary,salary+1000 as TOL f
  • APP端通过向服务器servlet提交表单(邮箱+旧密码+新密码),然后服务器从数据库中查相对应用户名旧密码是否一致,如果一致则更新数据库新密码,否则失败。 1.需要用到技术: 1.Android 2.servlet 3.MySQL...
  • MySQL数据库insert和update语句  引:用于操作数据库的SQL...在标准SQL有3个语句,它们是INSERT、UPDATE以及DELETE。  用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说SELECT语句,另外
  • 关于Update语句在不同数据库中的差别 Oralce和DB2都支持的语法:UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)MS SQL Server不支持这样的语法,相对应的写法为:...
  • 引用 http://tech.cncms.com/shujuku/oracle/18349_2.html 在Oracle数据库中,Insert、Update、Delete三个操作是对数据库中的数据进行插入、更新以...
  • 在创建update_time时候,将字段设置为timestamp类型,NOT NULL,默认值设置为current_timestamp on update current_timestamp 附上Sql语句:`update_time` timestamp NOT NULL DEFAULT current_timestamp on ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,157
精华内容 7,662
关键字:

数据库中的update