MySQL Composite主键AutoIncrement

时间:2017-11-21 17:46:32

标签: mysql sql auto-increment composite-primary-key

我正在尝试设计如下数据库:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = tableView.dequeueReusableCell(withIdentifier: "CurrencyCell", for: indexPath) as? CurrencyCell else { return UITableViewCell() }

    if currencies.count > 0 {
        let noVal = currencies[indexPath.row].rank ?? "N/A"
        let nameVal = currencies[indexPath.row].name ?? "N/A"
        let priceVal = currencies[indexPath.row].price_usd ?? "N/A"

        getIcon(id: currencies[indexPath.row].id!, completion: { (retImg) in
            cell.configureCell(no: noVal, name: nameVal, price: priceVal, img: retImg)
        })
    }
    return cell
}

我希望自动增量能够像这样工作 - 对于每个SKU,ItemAttributeID将从1开始自动增加。所以我可以拥有

CREATE TABLE `Item` (
   `SKU` int(11) NOT NULL,
   `ItemName` varchar(45) DEFAULT NULL
   PRIMARY KEY (`SKU`)
 )

CREATE TABLE `ItemVariant` (
   `SKU` int(11) NOT NULL,
   `ItemAttributeID` int(11) NOT NULL AUTO_INCREMENT,
   `Color` varchar(45) DEFAULT NULL,
   PRIMARY KEY (`SKU`,`ItemAttributeID`),
   CONSTRAINT `ItemAttributeMaster_SKU` FOREIGN KEY (`SKU`) REFERENCES `ItemMaster` (`SKU`) ON DELETE CASCADE ON UPDATE CASCADE
 )

但是使用自动增量并不能实现这一点。我怎样才能达到这个结果?

1 个答案:

答案 0 :(得分:0)

你要么必须手动完成,要么你可以使用触发器......或者在MyISAM引擎中,如果你将它用于表,它会像你想要的那样工作,但是该引擎不会强制执行外键。 / p>