programing

기존 테이블에 자동 증가 기본 키 삽입

bestcode 2022. 9. 21. 00:09
반응형

기존 테이블에 자동 증가 기본 키 삽입

프라이머리 키도 auto_increment 컬럼도 없는 테이블을 변경하려고 합니다.primary key column을 추가하는 방법은 알고 있습니다만, primary key column에 데이터를 자동으로 삽입할 수 있는지 궁금합니다(DB에 이미 500개의 행이 있고 ID를 주고 싶지만 수동으로 하고 싶지 않습니다).무슨 생각 있어?고마워요.

ALTER TABLE, 「」를 합니다.PRIMARY KEY이치노

ALTER TABLE tbl ADD id INT PRIMARY KEY AUTO_INCREMENT;

에서는 위의 「」가 되었습니다.AUTO_INCREMENT id컬럼 및 테이블 내의 각 기존 행에 대한 자동 삭제 값을 1부터 입력합니다.

id, no와 같은 자동 증분 열이 없는 경우 다음 쿼리를 사용하여 추가할 수 있습니다.

ALTER TABLE table_name ADD id int NOT NULL AUTO_INCREMENT primary key FIRST

열이 있는 경우 다음 쿼리를 사용하여 자동 증분으로 변경합니다.

 ALTER TABLE table_name MODIFY column_name datatype(length) AUTO_INCREMENT PRIMARY KEY

은 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.Multiple primary key defined류류: :

ALTER TABLE `myTable` ADD COLUMN `id` INT AUTO_INCREMENT UNIQUE FIRST NOT NULL;

에서는 MySQL v5.5.31을 합니다.id각 행에 증분 값을 입력합니다.

를 '키'로 auto_increment , , 을 사용할 수 .

ALTER TABLE table_name MODIFY id INT AUTO_INCREMENT;

네, 이런 거면 될 거예요. 하지만 최선은 아닐 수도 있어요.백업을 하는 것이 좋습니다.

$get_query = mysql_query("SELECT `any_field` FROM `your_table`");

$auto_increment_id = 1;

while($row = mysql_fetch_assoc($get_query))
{
  $update_query = mysql_query("UPDATE `your_table` SET `auto_increment_id`=$auto_increment_id WHERE `any_field` = '".$row['any_field']."'");
  $auto_increment_id++;
}

경우 다음과 같이 주의:any_field업데이트할 때 동일하게 선택해야 합니다.

가장 쉽고 빠르게 찾을 수 있는 것은 이것입니다.

ALTER TABLE mydb.mytable 
ADD COLUMN mycolumnname INT NOT NULL AUTO_INCREMENT AFTER updated,
ADD UNIQUE INDEX mycolumnname_UNIQUE (mycolumname ASC);

다음 코드를 사용하여 기존 비증분 프라이머리 키를 사용하여 테이블에 증가 프라이머리 키를 추가하고 오래된 키와 새로운 키를 모두 컴포지트 프라이머리 키로 하여 새로운 컴포지트 프라이머리 키를 작성할 수 있었습니다.

DROP TABLE  IF EXISTS SAKAI_USER_ID_MAP;

CREATE TABLE SAKAI_USER_ID_MAP (
       USER_ID             VARCHAR (99) NOT NULL,
       EID                 VARCHAR (255) NOT NULL,
       PRIMARY KEY (USER_ID)
);

INSERT INTO SAKAI_USER_ID_MAP VALUES ('admin', 'admin');
INSERT INTO SAKAI_USER_ID_MAP VALUES ('postmaster', 'postmaster');

ALTER TABLE  SAKAI_USER_ID_MAP 
  DROP PRIMARY KEY, 
  ADD _USER_ID INT AUTO_INCREMENT NOT NULL FIRST, 
  ADD PRIMARY KEY ( _USER_ID, USER_ID );

이 작업이 완료되면 _USER_는ID 필드가 존재하며 프라이머리 키의 모든 숫자 값이 예상대로 표시됩니다.맨 위에 있는 "DROP TABLE"을 사용하여 여러 번 반복하여 다양한 버전을 실험할 수 있습니다.

아직 작업을 할 수 없는 것은 USER_를 가리키는 외부 키가 착신하고 있는 상황입니다.[ID]다른 테이블에서 들어오는 외부 키를 사용하여 보다 복잡한 예를 수행하려고 하면 이 메시지가 나타납니다.

#1025 - Error on rename of './zap/#sql-da07_6d' to './zap/SAKAI_USER_ID_MAP' (errno: 150)

ALTER 테이블을 작성하기 전에 외부 키를 모두 분해한 후 재구축해야 할 것 같습니다.그러나 지금으로서는 다른 사람이 이 상황에 처했을 경우에 대비하여 이 솔루션을 원래의 질문보다 더 어려운 버전으로 공유하고 싶습니다.

테이블을 내보낸 후 테이블을 비우고 필드를 고유한 INT로 추가한 후 AUTO_INCREMENT로 변경한 후 이전에 내보낸 테이블을 다시 가져옵니다.

다음 명령을 사용하여 기존 테이블에 새 Primary Key 열을 추가할 수 있습니다.이 열에는 시퀀스 번호를 지정할 수 있습니다.

ALTER TABLE mydb.mytable ADD pk_columnName INT IDENTITY 

같은 문제에 직면해 있었기 때문에 프라이머리 키의 필드를 드롭하고 나서, 프라이머리 키를 재작성하고, 프라이머리 키가 자동 증분인 것을 확인했습니다.그것은 나에게 효과가 있었다.다른 사람들에게 도움이 되었으면 좋겠다.

ALTER TABLE 이름 테이블 이름 수정ID MEDINALINT NULL AUTO_Increment가 아닙니다.

여기서 tableName은 테이블의 이름입니다.

tableName은 기본 컬럼 이름입니다.

MEDIOMINT는 기존 기본 키의 데이터 유형입니다.

AUTO_INCREMENT는 null이 아닌 auto_increment만 추가해야 합니다.

그러면 기본 키가 auto_increment가 됩니다...

이것이 도움이 되기를 바랍니다.

여기에는 여러 가지 방법이 있습니다.-테이블에 데이터가 없는 경우 데이터를 삭제하고 다시 작성합니다.

기존 필드를 삭제하고 다음과 같이 다시 만들기

ALTER TABLE test DROP PRIMARY KEY, DROP test_id, ADD test_id int AUTO_INCREMENT NOT NULL FIRST, ADD PRIMARY KEY (test_id);

또는 수정만 하면 됩니다.

ALTER TABLE test MODIFY test_id INT AUTO_INCREMENT NOT NULL, ADD PRIMARY KEY (test_id);

기존 필드(이 예에서는 이름)를 프라이머리 키로 변경하기 위해 PHP를 작성하는 방법은 무엇입니까?물론 테이블에 'id' 필드를 추가합니다.

현재 작성된 표 - 발견된 레코드 수: 4 이름 VARCHAR(20) YES breed VARCHAR(30) YES color VARCHAR(20) YES weight SMARINT(7) YES

이것은 최종 결과입니다(표 설명) -

발견된 레코드 수: 4 name VARCHAR(20) PRI 품종 VARCHAR(30) YES color VARCHAR(20) YES weight SMARINT(7) YES

이걸 얻는 대신...

발견된 레코드 수: 5id int(11) PRI 이름 없음(20) YES breed VARCHAR(30) YES color VARCHAR(20) YES weight SMARINT(7) YES

노력한 후에..

$138 = "변경 테이블 경주마 AUTO_Increment가 아닌 ID INT를 먼저 추가하고 프라이머리 키(id)",

어떻게 구하지?-

발견된 레코드 수: 4 name VARCHAR(20) PRI 품종 VARCHAR(30) YES color VARCHAR(20) YES weight SMARINT(7) YES

즉, 프라이머리 키를 첫 번째 필드 레코드에 삽입/추가합니다(앞에서 설명한 바와 같이 'id' 필드를 추가하지 않음).

기존 기본 키가 없습니다.


ALTER TABLE `db`.`table` 
ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (`id`);
;

테이블에 기존 기본 키 열이 이미 있습니다.

(오래된 프라이머리 키 열은 삭제되지 않습니다.)

ALTER TABLE `db`.`table` 
ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT FIRST,
CHANGE COLUMN `prev_column` `prev_column` VARCHAR(2000) NULL ,
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
;

주의: 자동 증분에는 열이 먼저 와야 합니다. 따라서 FIRST 명령이 사용됩니다.

언급URL : https://stackoverflow.com/questions/9070764/insert-auto-increment-primary-key-to-existing-table

반응형