mysql - mysql触发器 - 将价格与数字相匹配
问题描述
我有一个名为“价格”的表和一个名为“Ranges_and_prices”的表。'Ranges_and_prices' 表存储带有价格的范围(即:1-20,10 英镑) 当有人输入价格时,当他们输入总数量时;它需要找到它所在的范围,然后在它旁边加上一个价格。例如,如果有人输入“Coffee, 3”,它将看到数字 3 并将其设置为 1-20 的范围,并给出 10 英镑的价格。
CREATE TABLE `prices` (
`id` int(11) NOT NULL,
`product` varchar(100) DEFAULT NULL,
`total_quantity` int(11) DEFAULT NULL,
`range` int(11) DEFAULT NULL,
`price` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `range_and_prices`
--
CREATE TABLE `range_and_prices` (
`id` int(11) NOT NULL,
`ranges` varchar(100) DEFAULT NULL,
`prices` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `range_and_prices`
--
INSERT INTO `range_and_prices` (`id`, `ranges`, `prices`) VALUES
(1, '1-20', 10),
(2, '21-40', 20);
我对此还是有点陌生,我只是想更好地理解触发器。我认为这将是插入后,但我不知道从那里去哪里。
任何帮助,将不胜感激 :)
解决方案
正如我看到的那样,您还没有得到答案,我即将对我正在构建的应用程序进行几乎相同类型的计算,我在您的示例中试了一下。
首先要做的事情是:您不能使用触发器来在触发器所在的同一张桌子上执行操作。含义:当您插入新产品时,您无法立即触发更新同一产品。
你必须重新安排你的桌子,我建议添加一个新的。在新表中,您将拥有一个指向您的产品 ID的FOREIGN KEY ,以便您以后可以加入这两个表并获得结果。在这里,您将存储您想要的范围价格 + 产品 ID。
我还对您的表进行了一些必要的更改,我不会全部命名它们,我将解释触发器中发生的所有事情,因为即使对我来说当时也有点混乱。随意研究代码并提出问题。
我为您做了一个工作示例,我认为应该如何完成,结果如下:
架构(MySQL v5.7)
**Query #1**
SELECT * FROM `range_and_prices`;
| id | ranges_from | ranges_to | prices |
| --- | ----------- | --------- | ------ |
| 1 | 1 | 20 | 10 |
| 2 | 21 | 40 | 20 |
| 3 | 41 | 60 | 40 |
---
**Query #2**
SELECT * FROM `product`;
| product_id | product | total_quantity |
| ---------- | ------- | -------------- |
| 1 | Coffee | 5 |
| 2 | sugar | 25 |
---
**Query #3**
SELECT * FROM `product` INNER JOIN `range` ON product.product_id=range.product_id;
| product_id | product | total_quantity | product_id | range_prices |
| ---------- | ------- | -------------- | ---------- | ------------ |
| 1 | Coffee | 5 | 1 | 10 |
| 2 | sugar | 25 | 2 | 20 |
---
您可以在此处查看完整的工作触发器代码,并通过更改最后一个插入行对其进行测试:在 DB Fiddle 上查看
希望这会对您有所帮助。干杯。
推荐阅读
- amazon-web-services - S3 网站 404 重定向规则未通过 HTTPS 触发
- scala - 将 1 列中的空值替换为另一列中的数据
- ios - AVAssetWriter 写入的文件大小/字节数
- node.js - 任何消息的不和谐机器人消息删除,性能问题
- python - 如何计算嵌套在字典中的列表中的项目数?
- python - 附加到大型 CSV 会使内存过载
- swiftui - SwiftUI 没有加载数据
- html - 如何将图像放在页面底部/HTML 中的所有其他内容?
- javascript - 复制组件并使其具有自己的使用状态
- python - 每隔一段时间更改一个 tkinter 标签文本