집 >데이터 베이스 >MySQL 튜토리얼 >기본 키 제약 조건을 위반하지 않고 MySQL에서 행을 복제하는 방법은 무엇입니까?
열을 열거하지 않고 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!