主キーの制約に違反せずに MySQL で行を複製するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-11 16:04:02
オリジナル
129 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート