助け合いフォーラム
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したときの挙動について
d
d1975
投稿日 2024/03/12
UPDATE sample SET id = 10 WHERE name = 'Suzuki';
このUPDATEはエラーになり、レコードはそのまま残る。結果id1,2,3の3レコードが残ると思ったのですがどこが認識違いでしょうか?
r
rink_rew
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
私が勘違いしました。失礼しました。 解説の通りで問題ありません。 このスレ消せるのかしら