1

임의의 내용을 가진이 임의의 테이블이 있습니다.
컬럼의 내용을 변경하지 않고 id에 +1 증가

id | 이름 | 임무
1 | 아아아 | 키르
2 | bbbb | etre
3 | ccccc | qwqw
4 | dddd | qwert
5 | eeee | 전위
6 | ffffffff | 토토


내가 원하는 것은 다른 이름과 다른 임무 그러나 OLD ID = 3 ID = 3 위의 표에서 열을 추가하는 것입니다 내가 이름을 가진 ID = 4를 갖고 싶어 그것이 id = 3이고 OLD id = 4 일 때의 임무는 id 5의 이름과 임무로 id = 5가됩니다.
그 열의 내부에있는 열을 입력하고 싶습니다. 아래 열은 ID를 +1하고 싶지만 열은 동일합니다. 예를 들어 아래 :


ID | 이름 | 임무
1 | 아아아 | 키르
2 | bbbb | etre
3 | zzzzzz | zzzzz
4 | ccccc | qwqw
5 | dddd | qwert
6 | eeee | 전위
7 | ffffffff | 토토

왜이 작업을 수행 할 수? CLOB가 2 개인 테이블이 있습니다. 그 CLOBS 내부에는 다른 쿼리가 있습니다. 예 : id = 1은 테이블 생성에 대한 clob을가집니다. id = 2 열에 대한 삽입 id = 3은 다른 테이블의 생성을 나타냅니다. id = 4는 함수를 가지고 있습니다.
이 ID를 모두 추가하면 하나의 텍스트 (또는 clob)를 작성하고 삽입 한 다음 함수를 작성해야합니다. 그 테이블은 거대한 스크립트와 같습니다.
왜 내가이 일을하고 있습니까? 개발자는 자신의 응용 프로그램을 구축하고 있으며 SQL이 특정 순서로 작동하기를 원하며 6 명의 개발자가 있으며 데이터 모델링과 성능 및 스크립트 실행 방법을 구성합니다. 위의 표는 다음과 같은 스크립트 호출을 구성하는 것입니다. 그들 wany

+0

1/2/3 대신 10/20/30과 같은 숫자를 사용할 수 있습니다. 그런 다음 모든 번호를 다시 매기 지 않고 값을 삽입 할 수 있습니다. –

답변

7

간단히 말하면, 그것을하지 마십시오.

이 사례는 사업용 가치를 사용하지 않아야하는 이유, 즉 기본 키에 대한 '실제 값'을 강조합니다.

귀하의 경우에는 기본 키를 다른 용도로 사용하지 말 것을 권장합니다. 행을 다시 정렬하려면 'order'라는 추가 열을 추가 한 다음 THAT 열을 변경하는 것이 좋습니다. 그렇게하면 기본 키와 다른 모든 레코드를 건드릴 필요가 없습니다.

이렇게하면 현재 레코드 아래의 모든 데이터베이스 레코드를 변경해야하는 접근법이 실제로는 좋지 않은 것처럼 보이는 문제를 피할 수 있습니다.https://stackoverflow.com/a/8777574/631619

+0

당신의 포인트를 100 % 이해하기 위해 새로운 칼럼을 삽입하는 데 걸렸습니다. 우리는 Pk를 많이 사용합니다.하지만 많은 힘을 가지고 있습니다. 나는 투표를 할 수 없다. 그러나 나는 당신에게 당신의 정보에 대해 감사한다고 말한다. :) – MMD

1
UPDATE random_table r1 
SET id = 
    (SELECT CASE WHEN id > 2 THEN id+1 ELSE id END id FROM random_table r2 
    WHERE r1.mission=r2.mission 
) 

그런 다음 새 값을 삽입 : 여기

일부 추가 정보를) 그냥 해당 업데이트를 취소하려고 상상한다.

+0

nice이 하나는 좋다. – MMD

관련 문제