2014-02-13 57 views
2

我的影片格式像这样的CSV:插入到多个表从一个CSV

MasterSKU, Location, Notes, SubSku1, SubSku2, SubSku3, SubSku4, SubSku5, ... 

我有一个MySQL数据库这样设计两个表:

CREATE TABLE `master_sku` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `master_sku` varchar(150) NOT NULL, 
    `bin` varchar(150) DEFAULT NULL, 
    `note` varchar(250) DEFAULT NULL, 
    `createdtime` datetime DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; 

CREATE TABLE `sub_sku` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `master_sku_id` int(11) NOT NULL, 
    `sub_sku` varchar(150) NOT NULL, 
    `createdtime` datetime DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1; 

所以我需要do允许用户上传CSV,然后分别将值插入master_sku和sub_sku。一些master_skus不会有子skus,有些会有很多sub skus。

有没有办法用外键同时插入到两个表中?

我还希望用户能够在稍后添加一个带有附加子SKU的CSV,它可以匹配现有的master_skus,并且只插入新的子SKUS。

回答

1

您不能同时插入行,但可以确保master_skus和sub_skus中的行将插入到数据库中,否则两者都将失败。这可以通过使用数据库事务来实现。