2010-03-10 3 views
5

PK를 변경하는 한 행을 복제해야합니다. 표는 각 클라이언트 설치마다 다를 수 있으므로 열을 열거 할 수는 없습니다.한 테이블을 변경하는 ANY 테이블의 행을 복사하는 방법

INSERT INTO table SELECT * FROM table WHERE PK='value' 

을하지만 난 PK를 복제하는 것을 시도하고 있기 때문에 분명히 실패 : 나는 다음을 수행 관리했습니다.

그때 나는 시도했다 : 열 이름이 일치하지 않았기 때문에 그것은 또한, 실패

INSERT INTO table SELECT 'newValue' AS PK, * FROM table WHERE PK='value' 

.

필자는 PK가 항상 첫 번째 열이 될 것이라는 것을 알고 있지만 많은 용도가 있는지 확신하지 못합니다.

그럼 ... 가능합니까? 어떤 생각?

답변

7

유일한 해결책은 열의 목록을 쿼리하고 ID 열을 제외하여 쿼리를 동적으로 작성하는 것입니다. 따라서 ID 열을 제외합니다 (PK를 건너 뛰려는 이유입니다).

+0

물론 PK는 기본 키의 약자입니다. – raven

+0

더 좋은 답변이 없으므로이 사실을 받아들입니다. 올바른 것으로 보입니다. – raven

2
INSERT INTO table1 (col1_PK, col2 col3) 
SELECT newValue, col2, col3 
FROM table1 
WHERE col1_PK = 'Value' 
+2

OP가 말했듯이 그는 사전에 열 이름을 알지 못합니다. –

관련 문제