我正在使用 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-ID_Lang。例如,如果我有记录 ID:1 ID_Lang:1 Name:Cat ID:2 ID_Lang:1 Name:Dog 并且我想为 Cat 添加法语翻译,则新记录将是 ID:1 ID_Lang:2 Name:Chat
现在我需要插入多条记录,有些将获得自动 ID,其他将使用现有的,具体取决于另一个表上是否存在值。是否可以在单个 INSERT ... SELECT 语句中执行此操作,还是必须使用游标?