기존 테이블에 자동 증분 기본 키 삽입
기본 키 또는 auto_increment 열이없는 테이블을 변경하려고합니다. 기본 키 열을 추가하는 방법을 알고 있지만 기본 키 열에 데이터를 자동으로 삽입 할 수 있는지 궁금합니다 (이미 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
열을 기본 키로 설정하고 각 행에 증분 값을 채웠습니다 .
예, 이와 같은 일이 최선을 다하지는 않지만 백업을 원할 수도 있습니다.
$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 필드를 가리키는 들어오는 FOREIGN KEY가있는 상황입니다. 다른 테이블에서 들어오는 외래 키를 사용하여보다 복잡한 예를 수행하려고하면이 메시지가 나타납니다.
#1025 - Error on rename of './zap/#sql-da07_6d' to './zap/SAKAI_USER_ID_MAP' (errno: 150)
ALTER 테이블을 수행하기 전에 모든 외래 키를 분리 한 다음 나중에 다시 작성해야한다고 생각합니다. 그러나 지금은 다른 사람들 이이 상황에 처한 경우를 대비 하여이 솔루션을 원래 질문의 더 도전적인 버전으로 공유하고 싶었습니다.
테이블을 내 보낸 다음 테이블을 비운 다음 필드를 고유 한 INT로 추가 한 다음 AUTO_INCREMENT로 변경 한 다음 이전에 내 보낸 테이블을 다시 가져 오십시오.
명령을 사용하여 시퀀스 번호를 가질 수있는 기존 테이블에 새 기본 키 열을 추가 할 수 있습니다.
ALTER TABLE mydb.mytable ADD pk_columnName INT IDENTITY
나는 같은 문제에 직면하여 내가 한 일에 기본 키에 대한 필드를 삭제 한 다음 다시 작성하여 자동 증분인지 확인했습니다. 그것은 나를 위해 일했다. 나는 그것이 다른 사람들을 돕기를 바랍니다
ALTER TABLE tableName MODIFY tableNameID MEDIUMINT NOT NULL AUTO_INCREMENT ;
여기 tableName 은 테이블 이름입니다.
tableName 은 기본 이름이며 수정 해야하는 열 이름입니다.
MEDIUMINT 는 기존 기본 키의 데이터 유형입니다
AUTO_INCREMENT you have to add just auto_increment after not null
It will make that primary key auto_increment......
Hope this is helpful:)
How to write PHP to ALTER the already existing field (name, in this example) to make it a primary key? W/o, of course, adding any additional 'id' fields to the table..
This a table currently created - Number of Records found: 4 name VARCHAR(20) YES breed VARCHAR(30) YES color VARCHAR(20) YES weight SMALLINT(7) YES
This an end result sought (TABLE DESCRIPTION) -
Number of records found: 4 name VARCHAR(20) NO PRI breed VARCHAR(30) YES color VARCHAR(20) YES weight SMALLINT(7) YES
Instead of getting this -
Number of Records found: 5 id int(11) NO PRI name VARCHAR(20) YES breed VARCHAR(30) YES color VARCHAR(20) YES weight SMALLINT(7) YES
after trying..
$query = "ALTER TABLE racehorses ADD id INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (id)";
how to get this? -
Number of records found: 4 name VARCHAR(20) NO PRI breed VARCHAR(30) YES color VARCHAR(20) YES weight SMALLINT(7) YES
i.e. INSERT/ADD.. etc. the primary key INTO the first field record (w/o adding an additional 'id' field, as stated earlier.
참고URL : https://stackoverflow.com/questions/9070764/insert-auto-increment-primary-key-to-existing-table
'Programming' 카테고리의 다른 글
무엇을 할 수 있습니까 (0) | 2020.06.15 |
---|---|
React setState 콜백을 사용하는 경우 (0) | 2020.06.15 |
Virtualenv에 다른 버전의 Python을 설치할 수 있습니까? (0) | 2020.06.15 |
Java에서 개인 정적 변수를 사용하는 것은 무엇입니까? (0) | 2020.06.15 |
ResponseEntity를 사용하는 경우 (0) | 2020.06.15 |