Postgresql
關係 {table_name} 的列 {table_name} 不存在 SQL 狀態:42703
在使用指定的表名和列名執行更新查詢時出現錯誤:
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
. 這甚至是有道理的,因為您只能在單個表中更新單個表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