>  기사  >  데이터 베이스  >  기본 키 제약 조건을 위반하지 않고 MySQL에서 행을 복제하는 방법은 무엇입니까?

기본 키 제약 조건을 위반하지 않고 MySQL에서 행을 복제하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-11 16:04:02131검색

How to Duplicate Rows in MySQL Without Violating Primary Key Constraints?

열을 열거하지 않고 MySQL에서 행 복제

MySQL에서 사용자는 테이블 내 기존 행의 복사본을 생성해야 합니다.

insert into table select * from table where primarykey=1

이 방법은 기본 키의 고유성으로 인해 "키 1에 대한 중복 항목" 오류를 발생시킵니다. 이 문제를 회피하기 위한 실행 가능한 솔루션은 임시 테이블을 생성하는 것입니다.

create table oldtable_temp like oldtable;
insert into oldtable_temp select * from oldtable where key=1;
update oldtable_tem set key=2;
insert into oldtable select * from oldtable where key=2;

그러나 Leonard Challis가 제안한 것처럼 보다 간소화된 접근 방식이 있습니다.

CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1;
UPDATE tmptable_1 SET primarykey = NULL;
INSERT INTO table SELECT * FROM tmptable_1;
DROP TEMPORARY TABLE IF EXISTS tmptable_1;

임시 테이블을 사용하면 기본 키 중복에 대한 우려를 피할 수 있습니다. 기본 키를 null로 설정하면 MySQL이 자동으로 고유한 값을 할당하여 중복 생성 위험을 제거할 수 있습니다.

삽입 중 특이성을 보장하려면 INSERT INTO 문에 LIMIT 1을 추가하는 것이 좋습니다.

또한 명확성을 위해 기본 키 값(예: 예시에서는 "tmptable_1")을 임시 테이블 이름에 통합하는 것이 좋습니다.

위 내용은 기본 키 제약 조건을 위반하지 않고 MySQL에서 행을 복제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.