创建两个表,其中一些 id 重叠。
create table outer_table (
id integer,
overlap_in smallint default 0
);
create table inner_table (
inner_id integer
);
接下来,用 id 填充它们,一些常见的。
insert into outer_table(id) values 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;
insert into inner_table(inner_id) values 0, 1, 2;
接下来,更新重叠指示器。但是,错误地,您输入了错误的列名,您只写了“id”而不是“inner_id”,并且您决定不使用别名。
update outer_table o
set o.overlap_in = 1
where o.id in (select id from inner_table);
结果:
- 没有 SQL 错误
- 它在 outer_table 的所有行中将overlap_in 字段更新为 1
这还算正常吗?任何解释为什么 db2 允许这样做?
注意:DB2 版本:
>db2level
DB21085I Instance "....." uses "64" bits and DB2 code release "SQL09075"
with level identifier "08060107".
Informational tokens are "DB2 v9.7.0.5", "...", "IP23285", and Fix Pack
"5".