私は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 ステートメントでそれを行うことは可能ですか、それともカーソルを使用する必要がありますか?