簡體   English   中英

使用MySQL觸發器更新符合條件的所有字段

[英]Using a MySQL trigger to update all fields matching a condition

我想做的是將每個插入查詢的列設置為$i的最新值,我以前從未在MySQL中使用過觸發器,但是我相信這是最簡單的方法。 我願意接受其他想法和建議。 現在我有:

$i = 1;
foreach($_FILES["upload_project_images"]["name"] as $key => $name) {   
      $p_image_query = " 
        delimiter |
            CREATE TRIGGER update_start_num BEFORE INSERT ON project_images
            FOR EACH ROW 
            BEGIN
                UPDATE `project_images` SET `NEW.i_start_num` = '$i' WHERE `i_project_id` = '$prject_id' AND 'i_type' = '2';
            END |
        delimiter;
        INSERT INTO `project_images` (i_name, i_type, i_project_id,i_start_num) VALUES ('$upload_project_images_name', '2', '$project_id','$i');";

   $result=mysql_query($p_image_query) or die(mysql_error()); 
   $i++;
  }

我的想法是i_start_num將等於最后一個$i因此我可以在更新查詢時從那里i_start_num

我的第一個想法是在另一個查詢之后運行一個查詢,但是我嘗試都不起作用:

  $i = 1;
  foreach($_FILES["upload_project_images"]["name"] as $key => $name) {   
        //insert the file data into the database
        $p_image_query = "INSERT INTO `project_images` (i_name, i_type, i_project_id,i_start_num) VALUES ('$upload_project_images_name', '2', '$project_id','$i')"
         $result=mysql_query($p_image_query) or die(mysql_error()); 
    $i++; 

  //update the starting image id number on all project images
        $p_update_startnum_qry ="UPDATE `project_images` SET `i_start_num` = '$i' WHERE `i_project_id` = '$prject_id' AND 'i_type' = '2'";
        $p_update_startnum_qry_result=mysql_query($p_update_startnum_qry) or die(mysql_error());
    }

這也失敗了。

嗯,也許試試這個:

// pseudo code
INSERT INTO `project_images` (i_name, i_type, i_project_id,i_start_num) 
VALUES ('$upload_project_images_name', '2', '$project_id','$i')
ON DUPLICATE KEY UPDATE `project_images` 
SET `i_start_num` = '$i' 
WHERE `i_project_id` = '$prject_id' AND 'i_type' = '2'

暫無
暫無

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

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