テーブル名と列名を指定して更新クエリを実行すると、エラーが発生します。
UPDATE Temp SET Temp.Id='234',Temp.Name='Test'WHERE Id='245'
これはエラーです:
ERROR: column "temp" of relation "temp" does not exist
LINE 1: UPDATE Temp SET Temp.Id='23...
^
********** Error **********
ERROR: column "temp" of relation "temp" does not exist
SQL state: 42703
Character: 24
SET
のUPDATE
句でテーブルエイリアス(またはtablename修飾列名)を使用することはできません(使用する必要もありません)。これは、1つのUPDATE
内の1つのテーブルしか更新できないため、そこにも列名のあいまいさが存在しないため、理にかなっています。
幸いにも、これまでに役立つドキュメント 明示的に言及 あなたのケース:
column_name
table_name
で指定されたテーブル内の列の名前。列名は、必要に応じてサブフィールド名または配列添え字で修飾できます。ターゲット列の指定にテーブルの名前を含めないでください。たとえば、UPDATE tab SET tab.col = 1
は無効です。
したがって、解決策はSET
句からtemp.
を単に削除することです。
UPDATE temp SET id = '234', name = 'Test' WHERE id = '245'
注:
id
列に'mkjcvnd7y78r3tgbhvcjh'
などを入力しないようにするにはどうすればよいですか?temp
ではなくTemp
と呼ばれます。後者の方法で使用すると、可読性が低下する場合があります(もちろん、好みや習慣によって異なります)。