Когда я вызываю функцию MySQL: 'modulo_usuario_verificar_usuario_subset_usuario' какНе удается повторно открыть временную таблицу
SELECT id FROM usuario WHERE modulo_usuario_verificar_usuario_subset_usuario(3, id);
MySQL жалуется:
ERROR 1137 (HY000): Can't reopen table: 'temp_modulo_usuario_obter_organizacoes_usuario'
Функция 'modulo_usuario_verificar_usuario_subset_usuario' что-то вроде этого:
FUNCTION `modulo_usuario_verificar_usuario_subset_usuario`(in_super_usuario int unsigned, in_sub_usuario int unsigned)
RETURNS int(11)
DETERMINISTIC
BEGIN
.....some code here ....
//This SP drops, creates, and populates the temporary table:temp_modulo_usuario_obter_organizacoes_usuario
call modulo_usuario_obter_organizacoes_usuario_c(in_super_usuario);
//Using the temporary table previously created
return (select not exists (select *
from sub_set
where sub_set.org_id not in ( select super_set.org_id
from temp_modulo_usuario_obter_organizacoes_usuario as super_set)) as super_usuario);
END
Где именно я повторно использую временные таблицы? Я понимаю, что внутри функции он используется один раз и в предложении select, которое вызывает функцию, функция создает новую временную таблицу
EDIT: Я только нашел хороший ответ, почему я не могу это сделать:
Calling a procedure inside a function throws MySQL ERROR 1422
К сожалению, вы не можете повторно использовать временные таблицы: https://dev.mysql.com/doc/refman/5.0/en/temporary-table-problems.html – nomistic