表格无法针对我的案例进行更新

时间:2015-11-11 15:24:44

标签: sql oracle

我创建了简单的表

create table test(
 name char(8),
 name2 varchar2(8)
);

...我在表格中插入一个值...

insert into test values('ABC',NULL);

此时,我尝试更新我插入的值......

update test
set name2 = 'ABC'
where name = 'ABC';

...但我的查询并不像我想的那样有效。它说:0行更新。

为什么它没有进行更新?

1 个答案:

答案 0 :(得分:2)

在一次运行的单个脚本中尝试全部(并且对两列都使用VARCHAR2,除非您确实需要使用CHAR):

create table test(name varchar2(8) name2 varchar2(8))
/

insert into test values('ABC', NULL)
/

update test set name2 = 'ABC' where name = 'ABC'
/

如果返回类似于:

的输出
Table created
1 row inserted
1 row updated

那是一个会话问题。

表创建是DDL,但插入和后续更新是DML,需要提交给数据库中的其他会话“看到”。即:

create table test(name varchar2(8) name2 varchar2(8))
/

insert into test values('ABC', NULL)
/

commit
/

然后在另一个会话中你可以发出:

update test set name2 = 'ABC' where name = 'ABC'
/

commit
/

希望有所帮助