2010-04-29 2 views
4
그래서이 작품

...설정 AUTO_INCREMENT 값은 프로그램

ALTER TABLE variation AUTO_INCREMENT = 10; 

그러나 나는이 작업을 수행 할 수;

ALTER TABLE variation AUTO_INCREMENT = (SELECT MAX(id)+1 FROM old_db.varaition); 

하지만 그 중 어떤 것도 작동하지 않습니다.

SELECT MAX(id)+1 INTO @old_auto_inc FROM old_db.variation 
ALTER TABLE variation AUTO_INCREMENT = @old_auto_inc; 

이렇게하는 방법을 알고 있습니까?

답변

0

I 돈을 (나는 새로운 DB 살아 간다 그래서 난 그냥 스크립트를 실행할 수 있습니다. 그 AUTO_INCREMENT 키는 과거와 새 사이트 사이에 충돌 해달라고 자동으로이 작업을 수행 할 필요가 보장하기 위해 노력하고있어) 이것이 좋은 생각인지는 모르지만 서버 측 언어 (예 : PHP)에서 2 개의 쿼리를 사용하여 수행 할 수 있습니까?

$incrementStep = Db::query('SELECT MAX(id)+1 FROM old_db.varaition'); 

Db::query('ALTER TABLE variation AUTO_INCREMENT = ' . (int) $incrementStep); 

Db::query 정확히 당신이 원하는 반환하는 마법 쿼리 방법, 나는 특정 대답을 줄 수있는 mysql을 충분히 익숙하지 않다 때마다 :)

+0

그래도 SQL에서이 모든 작업을 수행하려고했지만 위와 같은 작업을 수행해야합니다. – Tim

1

이라고 가정하면. 그러나 다른 데이터베이스 엔진에는 실행될 문자열을 전달할 수있는 EXEC 메서드가 있습니다. auto_increment에 대해 원하는 값을 결정하는 스크립트를 작성한 다음 해당 값을 문자열로 EXEC 된 스크립트에 삽입하십시오. 기본적으로 두 번째 스크립트를 작성하고 실행하는 스크립트 작성.

EDIT : 준비된 진술을 원하는 것처럼 보입니다. 팀, 이전에 주어진 거의 중복 StackOverflow의 게시물에 언급되어 심판 this 링크를 '동적 SQL은'검색 거의 here

EDIT2 중복있다. 페이지에서 '매개 변수 사용'문자열을 검색하면 해당 문자열을 알 수 있습니다. MySql은이 점을 분명히 어렵게 만듭니다. MSSqlServer 2000에서는 사소한 프로세스였습니다. Here은 mysql 동적 SQL에 대한 기사의 또 다른 링크입니다

+0

좋은 생각이지만 mysql이 그것을 좋아하지 않는 것 같습니다 mysql> 준비가 완료되었습니다 'ALTER TABLE variation AUTO_INCREMENT =?'; ERROR 1064 (42000) : SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 올바른 구문을 찾아 '?' 1 호선 – Tim

1

auto_increment을 1로 설정하면 0은 작동하지 않습니다. 자동으로 mysql은 최대 값을 인덱스 값의 다음 값으로 설정합니다.

ALTER TABLE table AUTO_INCREMENT = 1