簡體   English   中英

MYSQL-表中的AFTER UPDATE進行內部聯接

[英]MYSQL - Inner Join with AFTER UPDATE in table

我的MySQL數據庫中有一個名為jobPosts的表。 我試圖在當前jobPost表中發生更新后將數據插入到另一個表(jobRequest)中。

這是我的SQL表和查詢。

           DELIMITER //
           CREATE DEFINER=`root`@`localhost` TRIGGER 
           trg_jobPost_after_update
           AFTER UPDATE ON jobPost
           FOR EACH ROW
           BEGIN
           INSERT INTO jobRequest (userID, name, email, phoneNo, 
            location, jobID, 
                   title, level, dateFrom, dateTo, description, 
                   jobStatus, emailTeacher, nameTeacher, 
                   locationTeacher, phoneNoTeacher, cv, gardavetting, 
                   linkedin) 
      SELECT 
        jobPost.userID
      ,  jobPost.name
      ,  jobPost.email
      ,  jobPost.phoneNo
      ,  jobPost.location
      ,  jobPost.jobID
      ,  jobPost.title
      ,  jobPost.level
      ,  jobPost.dateFrom
      ,  jobPost.dateTo
      ,  jobPost.description
      , users.nameTeacher
      , users.locationTeacher
      , users.phoneNoTeacher
      , users.cv
      , users.gardavetting
      , users.linkedin
      , NEW.jobStatus
     , NEW.emailTeacher
   FROM jobPost
   WHERE jobPosts.emailTeacher = NEW.emailTeacher;
  END //
  DELIMITER ;

桌子-

jobPost表

用戶表

jobRequest表

從評論,似乎你只需要一個Inner Join之間jobPostusers表,上emailTeacher

另外,與Insert子句相比, Select中的某些列丟失了; 我已經按正確的順序添加了它們。

DELIMITER //
CREATE DEFINER=`root`@`localhost` TRIGGER 
    trg_jobPost_after_update
    AFTER UPDATE ON jobPost
       FOR EACH ROW
       BEGIN

       -- Check if jobStatus is Updated (then only we Insert) 
       IF ( OLD.jobStatus <> NEW.jobStatus AND 
            OLD.emailTeacher <> NEW.emailTeacher ) THEN 
         INSERT INTO jobRequest (userID, name, email, phoneNo, 
                                 location, jobID, title, level, 
                                 dateFrom, dateTo, description, 
                                 jobStatus, emailTeacher, nameTeacher, 
                                 locationTeacher, phoneNoTeacher, cv, 
                                 gardavetting, linkedin) 
         SELECT 
           jobPost.userID
        ,  jobPost.name
        ,  jobPost.email
        ,  jobPost.phoneNo
        ,  jobPost.location
        ,  jobPost.jobID
        ,  jobPost.title
        ,  jobPost.level
        ,  jobPost.dateFrom
        ,  jobPost.dateTo
        ,  jobPost.description
        ,  NEW.jobStatus 
        ,  NEW.emailTeacher 
        ,  users.nameTeacher 
        , users.locationTeacher
        , users.phoneNoTeacher
        , users.cv
        , users.gardavetting
        , users.linkedin
        FROM jobPost 
        JOIN users ON users.emailTeacher = jobPost.emailTeacher 
        WHERE jobPost.emailTeacher = NEW.emailTeacher;

      END IF;
END //
DELIMITER ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM