MySQL使用事务插入

时间:2015-11-26 08:27:35

标签: mysql sql select insert

我在mysql数据库上有以下结构:

  

sqlfiddle

我想做的是:

  1. DISTINCT industry表格
  2. 中选择Company
  3. 首先插入Industry表并获取自动递增ID
  4. 使用此ID重新插入IndustryTranslation表并设置"语言" =" en"
  5. 将公司的ID和新生成的行业ID插入MapCompanyIndustry
  6. 我知道用一个陈述是不可能的。但绝对可以通过交易实现。无法弄清楚如何通过一次交易来实现这一结果。

    有什么建议吗?

    模式

    CREATE TABLE `Industry` (
      `id` int(4) unsigned NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE `IndustryTranslation` (
      `industryID` int(4) unsigned NOT NULL,
      `language` varchar(5) NOT NULL,
      `name` varchar(255) NOT NULL,
      `confirmed` tinyint(1) DEFAULT '0',
      PRIMARY KEY (`industryID`,`language`),
      KEY `language` (`language`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE `Company` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      `imageUri` varchar(255) DEFAULT NULL,
      `countryID` int(3) unsigned DEFAULT NULL,
      `phone` varchar(255) DEFAULT NULL,
      `email` varchar(255) DEFAULT NULL,
      `verified` tinyint(1) DEFAULT NULL,
      `industry` varchar(255) DEFAULT NULL,
      `headquarters` varchar(255) DEFAULT NULL,
      `uri` varchar(255) DEFAULT NULL,
      `createdAt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
      `updatedAt` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      KEY `countryID` (`countryID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4004 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `MapCompanyIndustry` (
      `companyID` int(10) unsigned NOT NULL,
      `industryID` int(4) unsigned NOT NULL,
      PRIMARY KEY (`companyID`,`industryID`),
      KEY `industryID` (`industryID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

0 个答案:

没有答案