mysql - 如何为另一个表mysql创建触发器
问题描述
我有 2 张桌子
表 1
id product_id quantity status
表 2
id product_id status
使用 tbl1.product_id = tbl2.product_id,我想触发,所以如果我更新 tbl1.product_id 中的 tbl1.status,那么它将自动更新 tbl2.product_id 的状态,并具有相同的状态值
所以如果让我们说桌子是这样的
tbl1
+----+------------+----------+--------+
| id | product_id | quantity | status |
+----+------------+----------+--------+
| 1 | 15 | 2 | 1 |
| 2 | 16 | 4 | 1 |
+----+------------+----------+--------+
tbl2
+----+------------+--------+
| id | product_id | status |
+----+------------+--------+
| 1 | 15 | 1 |
| 2 | 16 | 1 |
+----+------------+--------+
如果我想将 tbl1.product_id = 15 更新为 status = 0,那么 tbl2.product_id = 15 也会像这样变为 status = 0
tbl1
+----+------------+----------+--------+
| id | product_id | quantity | status |
+----+------------+----------+--------+
| 1 | 15 | 2 | 0 |
| 2 | 16 | 4 | 1 |
+----+------------+----------+--------+
tbl2
+----+------------+--------+
| id | product_id | status |
+----+------------+--------+
| 1 | 15 | 0 |
| 2 | 16 | 1 |
+----+------------+--------+
解决方案
CREATE TRIGGER update_table2
AFTER UPDATE
ON table1
FOR EACH ROW
UPDATE table2
SET status = NEW.status
WHERE product_id = NEW.product_id;
推荐阅读
- javascript - 如何通过javascript在document.getElementById中输入更多方法
- angular - 如何在 Angular 中使用 stylemode 在高图表的进度条中应用颜色渐变
- java - RestAssured:验证实体的创建
- android - 在片段中使用 OnNewIntent 方法
- wpf - Wpf Material Design 日期时间选择器
- sql - BigQuery:为什么在添加“LEFT JOIN”后我会获得更多行?
- indexing - 如果在活动工作期间创建索引,Firebird“键大小超出索引的实现限制”错误消息?
- sms - 接收 Twilio 发送的带有测试凭据的 SMS?
- c# - 识别为 DateTime 的十进制值,而不是从 DateTime.Parse 返回 false
- php - 在 phpword Laravel 中定义另一个表中的一些数据