一部の ID が重複する 2 つのテーブルを作成します。
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;
次に、オーバーラップ インジケーターを更新します。しかし、誤って間違った列名を入力し、「inner_id」ではなく「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".