programing

기존 테이블에 열을 추가하고 MS SQL Server에서 고유 번호 지정

elecom 2023. 4. 28. 20:11
반응형

기존 테이블에 열을 추가하고 MS SQL Server에서 고유 번호 지정

기존 레거시 데이터베이스에 을 추가하고 각 레코드에 다른 값을 할당할 수 있는 절차를 작성하려고 합니다.을 추가하고 데이터를 자동 생성하는 것과 같은 것입니다.

예를 들어, "ID"(숫자)라는 열을 추가하면 각 레코드에 고유한 값을 초기화합니다.그래서, 내 ID 란에는 다음과 같은 기록이 있을 것입니다.1 to 1000.
그걸 어떻게 하는 거죠?

이 작업은 데이터베이스에 따라 다르지만 SQL Server의 경우 다음과 같이 수행할 수 있습니다.

alter table Example
add NewColumn int identity(1,1)

당신이 사용하는 SQL 데이터베이스를 게시하면 도움이 될 것입니다.MySQL의 경우 auto_increment를 원할 수 있습니다.

ALTER TABLE tableName ADD id MEDIUMINT NOT NULL AUTO_INCREMENT KEY

그러나 이것이 값을 소급 적용하는지는 확실하지 않습니다.그렇지 않으면 저장 프로시저 또는 간단한 프로그램(다른 사용자가 데이터베이스에 쓰지 않는 한)으로 값을 반복하고 설정할 수 있어야 합니다.LAST_INSERT_ID()ID 값을 생성하는 함수입니다.

오라클의 경우 아래와 같은 작업을 수행할 수 있습니다.

alter table mytable add (myfield integer);

update mytable set myfield = rownum;

Postgres 등가("id"를 키로 지정하려는 경우에만 두 번째 줄이 필수):

ALTER TABLE tableName ADD id SERIAL;
ALTER TABLE tableName ADD PRIMARY KEY (id);

ALTER TABLE을 사용하는 것만으로도 작동합니다.적절한 유형과 IDENTITY 플래그가 있는 열을 추가하면 해당 열이 작동합니다.

ALTER TABLE 구문에 대한 MSDN 기사 http://msdn.microsoft.com/en-us/library/aa275462(SQL.80).aspx 을 확인하십시오.

SQL Server의 IDENTIFIER 데이터 유형에 대해 다음을 시도합니다.

Alter table table_name
add ID UNIQUEIDENTIFIER not null unique default(newid())

해당 열에서 기본 키를 생성하려면 다음을 사용합니다.

ALTER TABLE table_name
ADD CONSTRAINT PK_name PRIMARY KEY (ID);

각 데이터베이스는 시퀀스 번호를 추가하는 방법이 다르기 때문에 데이터베이스에 따라 다릅니다.나는 컬럼을 추가하기 위해 테이블을 변경한 후 groovy/python/etc에 db 스크립트를 작성하여 데이터를 읽고 시퀀스로 id를 업데이트할 것입니다.데이터가 설정되면 표에 상위 번호 뒤에 시작하는 시퀀스를 추가합니다.데이터를 설정했으면 기본 키를 올바르게 설정합니다.

새 열을 유형으로 지정하지 않으려면IDENTITY(자동 검색) 또는 행 번호가 지정되는 순서를 구체적으로 지정하려면 유형 열을 추가할 수 있습니다.INT NULL이렇게 채웁니다.이 예에서는 새 열을 MyNewColumn이라고 하고 테이블의 기존 기본 키 열을 MyPrimaryKey라고 합니다.

UPDATE MyTable
SET MyTable.MyNewColumn = AutoTable.AutoNum
FROM
(
    SELECT MyPrimaryKey, 
    ROW_NUMBER() OVER (ORDER BY SomeColumn, SomeOtherColumn) AS AutoNum
    FROM MyTable 
) AutoTable
WHERE MyTable.MyPrimaryKey = AutoTable.MyPrimaryKey  

이 이능기은작이다서니동합버즉전지는하, 에▁that를 합니다.ROW_NUMBER()

언급URL : https://stackoverflow.com/questions/108211/add-a-column-to-existing-table-and-uniquely-number-them-on-ms-sql-server

반응형