我创建了简单的表
create table test(
name char(8),
name2 varchar2(8)
);
...我在表格中插入一个值...
insert into test values('ABC',NULL);
此时,我尝试更新我插入的值......
update test
set name2 = 'ABC'
where name = 'ABC';
...但我的查询并不像我想的那样有效。它说:0行更新。
为什么它没有进行更新?
答案 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
/
希望有所帮助