기존 레거시 데이터베이스에 열 을 추가하고 각 레코드에 다른 값을 할당 할 수 있는 절차 를 작성하려고 합니다 . 열을 추가 하고 데이터를 자동 생성하는 것과 같은 것입니다.
마찬가지로 “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를 시퀀스로 업데이트합니다. 데이터가 설정되면 상위 번호 이후에 시작하는 테이블에 시퀀스를 추가합니다. 데이터가 설정되면 기본 키를 올바르게 설정하십시오.