包含表联接的MySQL触发器

包含表联接的MySQL触发器,mysql,sql,Mysql,Sql,我需要在MySQL中为phpmyadmin编写一个触发器,将数据从一个名为RefTable的表插入到两个单独的表(IssueTable和JobTable)中。在从RefTable中返回一个正布尔值之后,我让触发器为我的问题表工作,并且插入了数据。事实证明,工单插入很困难 在从RefTable插入JobTable之前,我需要检查另一个名为ProjectTable的表中布尔值;如果返回正值,那么我想将数据插入JobTable 一旦我有了这两个查询,还需要加入这两个查询,因为phpmyadmin将不能

我需要在MySQL中为phpmyadmin编写一个触发器,将数据从一个名为RefTable的表插入到两个单独的表(IssueTable和JobTable)中。在从RefTable中返回一个正布尔值之后,我让触发器为我的问题表工作,并且插入了数据。事实证明,工单插入很困难

在从RefTable插入JobTable之前,我需要检查另一个名为ProjectTable的表中布尔值;如果返回正值,那么我想将数据插入JobTable

一旦我有了这两个查询,还需要加入这两个查询,因为phpmyadmin将不能与多个触发器一起工作

我对在IssueTable中插入数据的查询如下:

CREATE TRIGGER To_Issue_Table
AFTER INSERT ON _RefTable

BEGIN

Declare EntryDate DATETIME;
SET EntryDate = CURDATE();

CASE WHEN (new.ServiceCall) = 1
THEN INSERT INTO `_IssueTable`( `RefID`, `IssueEntryDate`, `IssueDesc`, `ResponseID`)
VALUES
( new.RefID, EntryDate, new.ProjectScope, new.ResponseID);
END CASE;

END
解析如下-一个数据字段没有跨多个字段复制,但还不是什么大问题。 我已完成查询并正在提交,正在填充IssueTable,但JobTable不是:

BEGIN

Declare EntryDate DATETIME;
Declare SurveyReqVar INT;
Declare CurrentProjectID INT;
SET EntryDate = CURDATE();
SET CurrentProjectID = new.ProjectID;
SET SurveyReqVar = 
(SELECT `SurveyReq`
        FROM _ProjectTable
        WHERE ProjectID = CurrentProjectID);

CASE WHEN (new.ServiceCall) = 1
THEN INSERT INTO `_IssueTable`( `RefID`, `IssueEntryDate`, `IssueDesc`, `ResponseID`)
VALUES
( new.RefID, EntryDate, new.ProjectScope, new.ResponseID);

WHEN (SurveyReqVar) = 1
THEN INSERT INTO `_JobTable`( `RefID`, `JobDetails`, `JobEntryDate`)
VALUES
( new.RefID, new.ProjectScope, EntryDate);



END CASE;

END

解析如下,一个数据字段未复制,但其余字段正常

BEGIN

Declare EntryDate DATETIME;
Declare SurveyReqVar INT;
Declare CurrentProjectID INT;
SET EntryDate = CURDATE();
SET CurrentProjectID = new.ProjectID;
SET SurveyReqVar = 
(SELECT `SurveyReq`
        FROM _ProjectTable
        WHERE ProjectID = CurrentProjectID);

CASE WHEN (new.ServiceCall) = 1
THEN INSERT INTO `_IssueTable`( `RefID`, `IssueEntryDate`, `IssueDesc`, `ResponseID`)
VALUES
( new.RefID, EntryDate, new.ProjectScope, new.ResponseID);

WHEN (SurveyReqVar) = 1
THEN INSERT INTO `_JobTable`( `RefID`, `JobDetails`, `JobEntryDate`)
VALUES
( new.RefID, new.ProjectScope, EntryDate);



END CASE;

END

你的代码毫无意义。您为查询结果分配了一个变量,该查询返回至少两列,可能还有许多行。您的触发器定义语句不正确。而且,你没有真正描述你试图实现的逻辑。@GordonLinoff我编辑了帖子中的错误。这有用吗?我知道,如何将变量设置为连接表的select查询,然后调用它,我的逻辑是错误的。但我被困在如何取得预期结果的问题上。