带连接的Mysql触发器

时间:2016-01-30 03:45:52

标签: mysql sql database triggers

我有三个MYSQL表,它们都相互关联,如下所示。

我目前正在存储dateofjob两次,因为我不知道如何在触发器中创建表连接。目前我在标本详情表上使用此触发器

CREATE TRIGGER `NewAge_update` BEFORE UPDATE ON `Speciemn_Details`
 FOR EACH ROW BEGIN
    SET NEW.Due_Date = DATE_ADD(NEW.CastDate,INTERVAL NEW.Age DAY);
END

这完全正常,但我希望能够从样本详细信息表中删除列dateofjob,并从Job_Details表中计算duedate,以避免自己拥有双重数据。< / p>

我必须加入job_details.IDTest_Details.PARENTIDTest_Details.TESTIDspecimen_details.TESTID加入,我只是不知道如何在 +----+-----------+ | ID | dateofjob | +----+-----------+ | 1 | 1/01/2015 | | 2 | 1/01/2016 | | 3 | 1/01/2017 | +----+-----------+ 内加入触发。任何帮助将非常感激

我试图尽可能详细但是如果需要更多信息请问我

Job_Details

+----------+--------+--------------+
| ParentID | TestID | TestLocation |
+----------+--------+--------------+
|        2 |   2154 | Barn         |
|        2 |   2155 | Barn         |
|        1 |   8055 | Yard         |
+----------+--------+--------------+

Test_Details

+--------+----------+---------+-----------+-----------+
| TestID | Specimen | TestAge | dateofjob |  Duedate  |
+--------+----------+---------+-----------+-----------+
|   2154 | A        |       3 | 1/01/2016 | 4/01/2016 |
|   2154 | B        |       8 | 1/01/2016 | 9/01/2016 |
|   8055 | A        |       2 | 1/01/2015 | 3/01/2015 |
+--------+----------+---------+-----------+-----------+

Specimen_Details

#include <iostream>

using namespace std;

int main()
{
    cout << 22 / 7 << endl;     // 3
    cout << 22.0 / 7.0 << endl; // 3.14286
}

1 个答案:

答案 0 :(得分:0)

加入内部触发器代码实际上与任何其他过程代码中的联接没有任何不同,除了您无法查询触发表而是拥有Creator和{{1}伪记录。如果我了解您的描述,您可能需要执行类似

的操作
DisplayName

(不要忘记触发器主体程序,所以你不必在一个声明中做所有事情。)