programing tip

SQL에서 정수 열 값을 1 씩 증가시키는 방법

itbloger 2020. 10. 21. 07:45
반응형

SQL에서 정수 열 값을 1 씩 증가시키는 방법


내 질문은

열의 값을 1 씩 증가시키는 방법

예를 들어 열에 ID1,2,3,4, .. 값이 있다고 가정합니다 .

이제이 테이블을 업데이트하면 ID열이 1 씩 증가해야합니다.

이제 ID2,3,4,5, ..


테이블의 모든 값에 하나를 추가하려면 ...

UPDATE myTable
SET ID = ID + 1

새 값을 만들려면 이전에 가장 높은 값 (일반적으로)보다 하나 더 많은 값을 만들려면 IDENTITY가 있는 열을 사용하세요.


자동으로 생성 된 각 행에 대해 고유 한 번호를 가지려면 Neil의 대답에 따라 IDENTITY입니다.

테이블을 업데이트 할 때마다 값을 늘리려는 경우 (즉, 키가 아님) :

Update MyTable
Set IDColumn = IDColumn + 1
Where <whatever>

이 시도:

Update Emp set testCount = ISNULL(testCount, 0) + 1 where testId=1

Oracle에서는 코드가 조금 더 까다 롭습니다.

시퀀스 개체를 사용하여 자동 증가 필드를 만들어야합니다 (이 개체는 숫자 시퀀스를 생성 함).

다음 CREATE SEQUENCE 구문을 사용합니다.

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

위의 코드는 1로 시작하여 1 씩 증가하는 seq_person이라는 시퀀스 개체를 만듭니다. 또한 성능을 위해 최대 10 개의 값을 캐시합니다. 캐시 옵션은 더 빠른 액세스를 위해 메모리에 저장 될 시퀀스 값 수를 지정합니다.

"Persons"테이블에 새 레코드를 삽입하려면 nextval 함수를 사용해야합니다 (이 함수는 seq_person 시퀀스에서 다음 값을 검색합니다).

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

위의 SQL 문은 "Persons"테이블에 새 레코드를 삽입합니다. "ID"열에는 seq_person 시퀀스의 다음 번호가 할당됩니다. "FirstName"열은 "Lars"로 설정되고 "LastName"열은 "Monsen"으로 설정됩니다.


IDENTITY이 작업을 수행 할 수 있습니다 .

CREATE TABLE [dbo].[MyTable](
    [MyTableID] [int] IDENTITY(1,1) NOT NULL,
    -- Other columns
)

첫 번째 레코드를 삽입하면 Id1이됩니다.


다음을 시도해 볼 수 있습니다.

DECLARE @i INT
SET @i = @@ROWCOUNT + 1

INSERT INTO YourTable
        (Identity Column)    
VALUES    
        (@i + 1)

참고 URL : https://stackoverflow.com/questions/9293900/how-to-increment-integer-columns-value-by-1-in-sql

반응형