助け合いフォーラム

OSS-DB

OSS-DB Silver(Ver3.0)
問題ID : 35457
問題を開く
次のSQL文を実行して、テーブルを作成した。 CREATE TABLE sample(id integer GENERATED ALWAYS AS IDENTITY, name text); その後、以下のSQL文を順に実行した場合、取得されるデータとして正しいものを選べ。 INSERT INTO sample (name) VALUES ('Suzuki'); INSE...

この問題はプレミアムコンテンツです。

上に戻る

GENERATED ALWAYS AS IDENTITY が指定された列の値をUPDATEしたときの挙動について

公開日 2024/03/12

UPDATE sample SET id = 10 WHERE name = 'Suzuki';
このUPDATEはエラーになり、レコードはそのまま残る。結果id1,2,3の3レコードが残ると思ったのですがどこが認識違いでしょうか?

2024/03/12 20:36

この問題の解説に記載のとおり、GENERATED ALWAYS AS IDENTITYが指定されているid列に明示的に値を指定したUPDATEやINSERTはエラーになるので、name=Suzukiのレコードのid列は変更されませんし(3番目のSQL)、id列に3を指定したレコードも追加されない(4番目のSQL)、結果、1番目のSQLと2番目のSQLで挿入された2レコードだけがそのまま残る、ということではないですか?

質問の意図が理解できていなかったらすみません。


コメント

d d1975

2024/03/13 20:36

私が勘違いしました。失礼しました。 解説の通りで問題ありません。 このスレ消せるのかしら

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?