2014-03-04 1 views
2

내가 별도의 데이터베이스 파일에 동일한 테이블에서 테이블에 레코드를 추가 해요 :INSERT * 쿼리 - 필드 순서 위험?

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