2014-03-04 66 views
2

我來自同一個表在一個單獨的數據庫文件添加記錄表:插入*查詢 - 字段順序危險?

INSERT INTO P 
SELECT * 
FROM P IN 'C:\update.accdb' 

我可以相信訪問是匹配字段由名稱字段順序?如果有人在C:\ update.accdb中重新命令P的字段,是否會破壞映射?

+1

你爲什麼不指定列名,那麼你就會知道被插入到底是什麼以及以什麼順序。 – supergrady

回答

6

該數據庫與現場訂單相匹配的名稱,而不是按名稱。

總是使用列列表。

我很驚訝,在這一點上文檔是完全模糊的。但是SQL標準和其他每個數據庫都使用位置。 MS Access做同樣的事情,因爲沒有要求在select子句中命名字段。所以,沒有必要有任何信息來對齊名稱。

+0

但我可以通過排除列名來節省一些擊鍵,並且所有花費我的代價都是大規模的不可數據數據損壞? ;-)呃,我有一些查詢要修改。 – pteranodon

+0

@ pteranodon。 。 。哦,通常它是可檢測的。在一些很難調試的行上會出現一些非常奇怪的錯誤。 –

+0

我會注意到,如果日期字段由於插入時的數據驗證錯誤而收到文本,但兩個數字字段切換會導致無聲錯誤映射。商Yipes!始終使用列列表。始終使用列列表。 – pteranodon

0

@Gordon Linoff已經說過這一點,但只是強調:

總是使用列的列表,每個數據庫中,在每一個查詢。

你的同事,客戶,一般的後代到第n代都會感謝你。

所以您的查詢應該是:

insert into something (columns...) 
select columns... 
from somewhere