1

私はInnoDBを使用しています。私のテーブル構造は次のとおりです。

CREATE TABLE `generic_part_name` (
 `ID` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
 `ID_Lang` tinyint(3) unsigned NOT NULL,
 `Name` varchar(250) NOT NULL,
 PRIMARY KEY (`ID`,`ID_Lang`),
 UNIQUE KEY `Name_Lang_UNIQUE` (`Name`,`ID_Lang`),
) ENGINE=InnoDB AUTO_INCREMENT=4600 DEFAULT CHARSET=utf8;

ご覧のとおり、複合主キーを使用しており、キーの一部は自動インクリメント列です。別のテーブルに条件が存在する場合、自動インクリメントを防止し、キー ペア ID-ID_Lang に既存の ID を使用したいと考えています。たとえば、ID:1 ID_Lang:1 Name:Cat ID:2 ID_Lang:1 Name:Dog というレコードがあり、フランス語で Cat の翻訳を追加したい場合、新しいレコードは ID:1 ID_Lang:2 Name:Chat になります。
ここで、複数のレコードを挿入する必要があります。自動 ID を取得するものもあれば、他のテーブルに値が存在するかどうかに応じて既存の ID を使用するものもあります。単一の INSERT ... SELECT ステートメントでそれを行うことは可能ですか、それともカーソルを使用する必要がありますか?

4

0 に答える 0