【发布时间】:2020-11-01 23:34:29
【问题描述】:
我有一个表“A”,其中有一列“标志”,如下所示:
candidate_id | name | flag
-----------------------------
0001 | ABC | f |
0002 | DEF | t |
0003 | GHI | t |
还有一个表“B”,其中有一列“状态”,如下所示:
candidate_id | status
-----------------------------
0001 | Applied |
0002 | Applied |
0003 | Applied |
我想用以下逻辑写一个触发器:
- 当表“B”中出现条目时,我想将“状态”值更改为“拒绝”,仅当表“B”中最后插入的“candidate_id”引用表“A”中的“candidate_id”时, 有一个“flag=t”。
我已经编写了一个触发器,如下所示,但我无法在 MySql 中找到语法来获取特定候选 ID 的“标志”值:
CREATE TRIGGER update_status_to_rejected
Before INSERT ON db.B FOR EACH ROW
BEGIN
DECLARE candidate_id INTEGER;
candidate_id = NEW.candidate_id;
// Im stuck from here with the MySQL syntax
get the last_inserted candidate_id,
check in table A whether this candidate_id flag=='t'
then:
set NEW.status = 'Rejected'
你能在这里指导我吗?我搜索了许多解决方案,但无法找到何时需要检查另一个表的值。我还想知道如何使用 status='Rejected' 插入新行,而不是更新最后插入的行。提前谢谢你。
【问题讨论】:
标签: mysql database triggers mysql-workbench database-trigger