##// END OF EJS Templates
MySQL: You can't specify target table for update in FROM clause (#23347)....
Jean-Philippe Lang -
r15355:a78c72490298
parent child
Show More
@@ -1,15 +1,15
1 class ClearEstimatedHoursOnParentIssues < ActiveRecord::Migration
1 class ClearEstimatedHoursOnParentIssues < ActiveRecord::Migration
2 def self.up
2 def self.up
3 # Clears estimated hours on parent issues
3 # Clears estimated hours on parent issues
4 Issue.where("rgt > lft + 1 AND estimated_hours > 0").update_all :estimated_hours => nil
4 Issue.where("rgt > lft + 1 AND estimated_hours > 0").update_all :estimated_hours => nil
5 end
5 end
6
6
7 def self.down
7 def self.down
8 table_name = Issue.table_name
8 table_name = Issue.table_name
9 leaves_sum_select = "SELECT SUM(leaves.estimated_hours) FROM #{table_name} leaves" +
9 leaves_sum_select = "SELECT SUM(leaves.estimated_hours) FROM (SELECT * FROM #{table_name}) AS leaves" +
10 " WHERE leaves.root_id = #{table_name}.root_id AND leaves.lft > #{table_name}.lft AND leaves.rgt < #{table_name}.rgt" +
10 " WHERE leaves.root_id = #{table_name}.root_id AND leaves.lft > #{table_name}.lft AND leaves.rgt < #{table_name}.rgt" +
11 " AND leaves.rgt = leaves.lft + 1"
11 " AND leaves.rgt = leaves.lft + 1"
12
12
13 Issue.where("rgt > lft + 1").update_all "estimated_hours = (#{leaves_sum_select})"
13 Issue.where("rgt > lft + 1").update_all "estimated_hours = (#{leaves_sum_select})"
14 end
14 end
15 end
15 end
General Comments 0
You need to be logged in to leave comments. Login now