[sql] 기존 테이블에 열을 추가하고 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의 UNIQUEIDENTIFIER 데이터 유형에 대해서는 이것을 시도하십시오.

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를 시퀀스로 업데이트합니다. 데이터가 설정되면 상위 번호 이후에 시작하는 테이블에 시퀀스를 추가합니다. 데이터가 설정되면 기본 키를 올바르게 설정하십시오.