mysql unique不起作用_MySQL UNIQUE键不起作用

我在库存表上建立类型,通过6个不同因素跟踪库存.我使用的查询与此类似:

INSERT INTO inventory ( productid, factor1, factor2, factor3, factor4, factor5, factor6, quantity, serial_number)

VALUES (242332,1,1,1,'V67',3.30,'NEW',10,NULL)

ON DUPLICATE KEY UPDATE `quantity` = VALUES(`quantity`) + quantity;

库存表具有UNTIQUE KEY(productid,factor1,factor2,factor3,factor4,factor5,factor6,serial_number).由于某种原因,它没有拿起密钥而只是INSERTing而不是UPDATEing.任何人都可以提供解释原因吗?我错过了什么?

这是表create语句:

CREATE TABLE `inventory` (

`stockid` int(11) unsigned NOT NULL AUTO_INCREMENT,

`productid` int(11) unsigned NOT NULL,

`factor1` int(11) unsigned NOT NULL,

`factor2` int(11) unsigned NOT NULL,

`factor3` int(11) unsigned NOT NULL,

`factor4` varchar(8) NOT NULL,

`factor5` decimal(10,2) NOT NULL,

`factor6` enum('A','B','C','D','NEW') NOT NULL,

`quantity` int(11) NOT NULL,

`stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

`serial_number` varchar(11) DEFAULT NULL,

PRIMARY KEY (`stockid`),

UNIQUE KEY `serial_number` (`serial_number`),

UNIQUE KEY `productid_2` (`productid`,`factor1`,`factor2`,`factor3`,`factor4`,`factor5`,`factor6`,`serial_number`),

KEY `productid` (`productid`),

KEY `factor1` (`factor1`),

KEY `factor2` (`factor2`),

KEY `factor3` (`factor3`),

CONSTRAINT `books_stock_ibfk_2` FOREIGN KEY (`productid`) REFERENCES `produx_products` (`productid`),

CONSTRAINT `books_stock_ibfk_5` FOREIGN KEY (`factor1`) REFERENCES `table_factor1` (`factorid`),

CONSTRAINT `books_stock_ibfk_6` FOREIGN KEY (`factor2`) REFERENCES `table_factor2` (`factorid`),

CONSTRAINT `books_stock_ibfk_7` FOREIGN KEY (`factor3`) REFERENCES `table_factor3` (`factorid`)

)

ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=latin1

更深入:

此表的目的是保存库存数量.我认为这很简单.分离这些数量的因素如下:

> factor1 = storeid(拥有此数量的商店的唯一标识符).

> factor2 = supplierid(我们从中获取数量的供应商的唯一缩进)

> factor3 = warehouseid(它所在仓库的唯一标识符)

> factor4 = locationid(该位置的唯一字符串.它在货架上实际绘制)

> factor5 =成本(我们为每个数量支付的费用)

> factor6 = condition(enum [‘NEW’,’USED’,’RENTAL’,’PREORDER’).前三个很容易,第四个是我们订购的数量,想卖,但还没有收到.)

我知道这是一个沉重的钥匙,但我不得不这样做.我有很多建议将成本或条件移到产品表中.我不能做到这一点.由于我们从拍卖或其他地方购买了大量成本和条件,因此成本并不总是相同.

我希望这有助于解释我想要做的事情.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值