泣き虫プログラマーのメモ書き

文系出身SEが、めそめそしながら綴るメモ。

やっちまった:UPDの主キー被り

内容

SQLのINSERT文、UPDATE文にて、登録(変更)するカラムの項目に
WHERE句で指定している主キーを書いている。
同じこと書いてもいいが、無駄である。

-- psqlのはなしです
-- NG!!
UPDATE table1 t1
SET colunm1 = t2.colunm1 -- 主キー
   ,colunm2 = t2.colunm2 -- 主キー
   ,colunm3 = t2.colunm3
FROM table2 t2
WHERE t1.colunm1 = t2.colunm1
AND   t1.colunm2    = t2.colunm2; 

-- OK!!
UPDATE table1 t1
SET colunm3 = t2.colunm3
FROM table2 t2
WHERE t1.colunm = t2.colunm1
AND   t1.colunm2 = t2.colunm2; 

要因

SQLの基礎がわかってない。