一个接一个的错误。基本上,我尝试将columns值设置为 1
在我的 products
如果在更新 product_stock
表格列 available
大于0(表示库存中至少有一个)。
mpn在我的系统中是唯一的外键 products
表中,所以只要列中有正值 available
在table上 product_stock
这个 in_stock
的值 mpn
在 products
表应设置为 1
.
我正在处理的两张table:
1
CREATE TABLE `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`mpn` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`in_stock` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `mpn` (`mpn`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
2
CREATE TABLE `product_stock` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`mpn` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`size` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`available` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `product_stock_ibfk_1` (`mpn`),
CONSTRAINT `product_stock_ibfk_1` FOREIGN KEY (`mpn`) REFERENCES `products` (`mpn`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
还有我的扳机的一个变种
DELIMITER $$
CREATE TRIGGER ps_update AFTER UPDATE ON `product_stock`
FOR EACH ROW BEGIN
IF NEW.available > 0 THEN
SET products.in_stock = 1;
ELSE
SET products.in_stock = 0;
END IF;
END$$
DELIMITER ;
错误代码
1条答案
按热度按时间xxslljrj1#
不能使用更新另一个表中的值
SET
一个人。你需要使用合适的UPDATE
声明这样做。我还增加了更多的条件,这样它就不会开火了
UPDATE
每次查询。它会开火的UPDATE
只有在环境发生变化时in_stock
需要值。