select 1 from category_translations where category_id = :category_id and locale = :locale delete from category_object_map where object_id = :object_id insert into category_object_map (category_id, object_id) values (:category_id, :object_id) insert into category_object_map (category_id, object_id) (select l.to_category_id as category_id, m.object_id from category_links l, category_object_map m where l.from_category_id = m.category_id and m.object_id = :object_id and not exists (select 1 from category_object_map m2 where m2.object_id = :object_id and m2.category_id = l.to_category_id)) select category_id from category_object_map where object_id = :object_id select category_id, locale, name from category_translations order by category_id, locale select locale, name from category_translations where category_id = :category_id order by locale select tree_id from categories where category_id = :object_id