12
하나의 DB에서 다른 DB로 테이블 데이터를 복사하는 스크립트가 있지만 ID 열은 시퀀스에 의해 백업되므로 새로운 레코드가 대상 테이블에 삽입 될 때 nextval(seq)
잘못된 값을 반환하고 있습니다.nextval이 next unused id가되도록 다시 시작
다음 사용 가능한 ID에서 시작되도록 시퀀스를 업데이트해야합니다. 위의 내용 그러나 구문 오류가 발생
ALTER SEQUENCE seq_id RESTART WITH
(SELECT MAX(id) FROM tbl);
:
내가 좋아하는 일을하고 싶습니다.
누구나 다른 방법을 제안 할 수 있습니까?
덕분에, 에코는 psql 프로그램에 파이프로 내가 이것을 실행 해요 .. 당신이 말해 줄 수 전체 명령을 어떻게 하나로 탈출 시키는가? – pstanton
'alter sequence' 문을 동적으로 만들 필요없이'setval' 함수를 사용할 수 있습니다; 더 간단하지만, 당신이 이것들을 하나씩하는 것이라면 어떤 실질적인 변화도 가져 오지 않습니다. – araqnid