2011-12-13 4 views
0

다음 OPENQUERY 문에서 SQL Server의 MySql 데이터베이스에 대해 실행하려고하면 오류가 발생합니다.UPDATE OPENQUERY 실패

UPDATE OPENQUERY(MYWPDB, 'SELECT total FROM wp_tt WHERE id = 112121') SET total = 1 

오류는 "키 열 정보가 불충분하거나 올바르지 않습니다. 너무 많은 행이 업데이트에 의해 영향을 받았다"입니다.

명세서는 'total'필드를 '1'값으로 업데이트해야합니다. 정수 필드이고 'id'는 테이블의 기본 키입니다. SQL Server 2000을 사용하고 있습니다.

답변

1

쿼리에 문제가 없습니다. 저장 프로 시저 내에서 커서 작업 내에서 문을 실행하려고했습니다. 커서 작업 외부에서 테스트하고 잘 처리했습니다.

그러나 여전히 커서 내에서 작업해야하므로 파기를 계속해야하고 마침내 4 부분 구문이 트릭을 수행한다는 것을 알게되었습니다. 그래서 쿼리는 대신 다음과 같이되었습니다.

UPDATE MYWPDB...wp_tt SET total = 1 WHERE id = 112121 
+1

난 당신이 마지막 "WHERE"절을 필요가 있다고 생각하지 않습니다

그래서 귀하의 경우에는 다음과 같이 될 것이다. 대신, 원래의 openquery에서 id를 선택하기 만하면됩니다. 나는 똑같은 문제를 가지고 당신의 예제를 따라 갔지만, select에 id를 추가 한 후에는 최종 "WHERE"가 없어도 작동했습니다. – Dan

2

iSeries를 업데이트하는 openquery에서 동일한 문제가있었습니다. 내 openquery도 커서 내에 있습니다. 수정 사항은 선택 항목에 키 열을 포함시키는 것입니다.

UPDATE OPENQUERY(MYWPDB, 'SELECT key1, key2, total FROM wp_tt WHERE id = 112121') SET total = 1