db2 update 同一张表的不同行为什么不行

作者&投稿:施闵 (若有异议请与网页底部的电邮联系)
db2中一张表更新另外一张表 只更新~

db2中一张表更新另外一张表 只更新
merge a using () b on (a.字段1=b.字段1)
when matched then update set a.字段2=b.字段2

update A a set a.dui_status=( select b.dui_status from B b where b.dui_date=a.dui_date and b.acct_no=a.acct_no )
where a.dui_status= 条件 and 其它限制条件.
这样就只改自己想改的东西,你上面写的是改所有,肯定有没有匹配的记录,注意你不是改所有。

支持,需要指定隔离级别,因为隔离级别决定了DATA应该采用什么样的锁。你不用理会数据库的隔离级别,只需要在UPDATE语句后用面加上with CS或with UR.
RR 会锁住整个表,RS会锁住读取过的所有行,所以这两个都不行。

Use the WITH clause 适用于下面几种情况:
* SELECT
* SELECT INTO
* Searched DELETE
* INSERT
* Searched UPDATE
* DECLARE CURSOR

你也可以数据库链接建立之前(事务开始之前),设置隔离级别:
db2 terminate
db2 change isolation to CS(或UR)
db2 connect to sample

这是两个事务并发控制的问题。
一般的,DB2支持的事务可有四个隔离级别,RR(Read Repeatable) RS(Read Stability) CS(Cursor Stability)和UR(Uncommited Read)。
如果是RS、CS或者UR时都不会有问题。
在事务隔离级别为RR的时候这两者必须先后执行,就是一个提交了,另外一个再执行再提交。


琼结县18817388536: db2如何实现用一张表的某个字段更新另一张表的相应字段. -
诏咐甘克: update A a set a.dui_status=( select b.dui_status from B b where b.dui_date=a.dui_date and b.acct_no=a.acct_no ) where a.dui_status= 条件 and 其它限制条件.这样就只改自己想改的东西,你上面写的是改所有,肯定有没有匹配的记录,注意你不是改所有.

琼结县18817388536: db2中一张表更新另外一张表 只更新 -
诏咐甘克: db2中一张表更新另外一张表 只更新 merge a using () b on (a.字段1=b.字段1) when matched then update set a.字段2=b.字段2

琼结县18817388536: db2两张表关联更新 -
诏咐甘克: 以防关联不到的被更新为null,比较完整的写法为: update a set a.a1=(select b1 from b where b.b2=a.a2)where exists (select 1 from b where b.b2=a.a2); 为了防止多值(b2有重复值)更新不成功,可以写存储过程用for循环: for t as select b1,b2 from b do update a set a.a1=t.b1 where a.a2=t.b2end for

琼结县18817388536: oracle数据库同一张表中update问题 -
诏咐甘克: UPDATE a a1 set z = (SELECT COUNT(distinct a2.y) FROM a a2 WHERE a2.x =a1.x )

琼结县18817388536: 请教,mysql update where not exists同一张表该怎么写 -
诏咐甘克: mysql的功能问题 mysql不支持对同一个表查询后做修改(update、delete)操作 update score set 姓名='王五' where 总分=(select score from (select min(总分) as score from score) as a); 制定个新表名就可以了

琼结县18817388536: 如何使用update语句直接更新通过select出来的结果集中的某个字段?(同一个表) -
诏咐甘克: 如果想实现这个修改update barcode set colorid = 'B' where goodis between 100 and 110就行了 如果是不能用一个简单的where查询完成 需要把查询结果指定一个新的表名 mysql是不支持同一个sql语句中update或delete同一个表的select结果的 语句如下: update barcode set colorid='B' where colorid in (select colorid from (select * from barcode where goodis between 100 and 110) as a);

琼结县18817388536: oracle 可以对一张表进行并发同时更新吗? -
诏咐甘克: Oracle里可以并发的更新一张表,但是如果同时操作同一条记录就会锁等待,如果一致读版本与当前读版本不一致,在READ COMMITTED隔离级别就会重启动

琼结县18817388536: 数据库里有俩张表,两张表有相同的字段,也有不同的字段,怎样把相同的字段的数据从一张表更新到另外一张 -
诏咐甘克: 两张表如果有相同标识的话你可以用sql语句完成 update A set a.name=(select b.name from B where A.id=B.id),没有的话谁知道你B表的某条数据是要更新A表哪条数据.

琼结县18817388536: sql中怎么把一张表的内容复制到另一张表中 -
诏咐甘克: 如果是同一个server 下的两个数据库,也可以直接用insert ...select 方式来复制 如 insert into db1.dbo.tableA select * from db2.dbo.tableB

琼结县18817388536: DB2数据更新问题 -
诏咐甘克: 按照你的说法,是先从一个表(假定表名为A)里读取1000行数据,然后到正式表(假定表名为B)里分别判断每条记录,如果没有这条记录就INSERT到正式表,如果正式表有这条记录就UPDATE正式表的数据,然后再处理下一个1000行.我...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网