>

이 테이블이 있습니다 :

CREATE TABLE [dbo].[Phrase]
(
    [PhraseId] [uniqueidentifier] NOT NULL,
    [PhraseNum] [int] NULL
    [English] [nvarchar](250) NOT NULL,
    PRIMARY KEY CLUSTERED ([PhraseId] ASC)
) ON [PRIMARY]
GO

내가하고 싶은 것은 테이블을 정렬하고 열 PhraseNum 를 채우는 것입니다.  정렬 된 테이블의 첫 번째 행이 1 인 숫자  그 이후의 각 행은 이전보다 하나 큰 값을 갖습니다.


  • 답변 # 1

    Alan, PhraseNum의 데이터가 중요하지 않은 경우 (게시물에서 볼 수 있듯이) 해당 열을 삭제하고 ID 열로 추가 할 수 있습니다

    ALTER TABLE Phrase drop column PhraseNum ;
    ALTER TABLE Phrase Add PhraseNum int identity(1,1) not null;
    
    

    PhraseNum의 번호 매기기는 클러스터 인덱스 정렬 기준에 의해 수행되므로 PhraseId에 의해 수행됩니다

    하지만 먼저 테스트 데이터베이스에서 테스트하는 것이 안전합니다.

  • 답변 # 2

    SQL Server의 경우 ID 열을 사용하여이 작업을 수행합니다.

    CREATE TABLE [dbo].[Phrase](
        [PhraseId] [uniqueidentifier] NOT NULL PRIMARY KEY,
        [PhraseNum] int identity(1, 1) NOT NULL
        [English] [nvarchar](250) NOT NULL
    );
    
    

    (클러스터 된) 기본 키로 고유 한 식별 정보를 갖는 것은 정말 나쁜 생각입니다. 왜? 새로운 값은 주문되지 않습니다. 이는 각 insert 마다 데이터를 다시 정렬해야 함을 의미합니다.  -조각화가 발생합니다.

    PhraseNum 를 사용해야합니다  열을 기본 키로 사용합니다.

관련 자료

  • 이전 파이썬에서 파일에 여러 값을 저장하는 방법
  • 다음 python - 월말 7 일 전 crontab이 시작됩니다