Postgresql

關係 {table_name} 的列 {table_name} 不存在 SQL 狀態:42703

  • December 8, 2021

在使用指定的表名和列名執行更新查詢時出現錯誤:

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

您不能(也不需要)SETUPDATE. 這甚至是有道理的,因為您只能在單個表中更新單個表UPDATE,因此那裡的列名沒有歧義。

幸運的是,有用的文件明確提到了您的案例:

列名

表中由 命名的列的名稱table_name。如果需要,列名可以用子欄位名或數組下標限定。不要在目標列的規範中包含表的名稱——例如,UPDATE tab SET tab.col = 1是無效的。

因此,解決方案是簡單地temp.SET子句中刪除:

UPDATE temp SET id = '234', name = 'Test' WHERE id = '245'

筆記:

  • 您真的將數字儲存為文本嗎?如果是,為什麼?這通常是災難的根源。例如,您如何防止諸如'mkjcvnd7y78r3tgbhvcjh'進入您的id列之類的事情?
  • 您使用以大寫字母開頭的對象名稱的方式令人困惑。沒有雙引號它的名字,你的表實際上被稱為temp而不是Temp. 後一種方式使用它可能會降低可讀性(當然取決於您的偏好和習慣)。

如果對具有相同欄位名稱的 2 個表進行更新,會發生什麼情況?

update car c, airplane a
set c.nr_rute = 1
set a.nr_rute = 1

引用自:https://dba.stackexchange.com/questions/145719