Задавайте вопросы, мы ответим
Вы не зашли.
Прошу помощи в обновлении поля таблицы значением из хранимой процедуры.
В текущей базе (MariaDB) имеется таблица table1, в которой имеется 8-символьное поле id типа Char. Также в этой же базе имеется хранимая процедура GenUniKey(), генерирующая 8-символьное случайное значение и запоминающая его в отдельной таблице b22_tblKeys.
Эта процедура прекрасно работает при вызове через PHP. А можно ли как-нибудь вызвать эту процедуру внутри предложения UPDATE SQL чтобы заменить значения поля table1.id во всех записях?
Я пробовал вот так:
Неактивен
Zagin написал:
А можно ли как-нибудь вызвать эту процедуру внутри предложения UPDATE
Триггер.
Обычно подобные уникальные ключи - не "рандомные", а просто идентификаторы, переведенные в систему счисления с основанием 32 или 64 (с учетом полной разрядности идентификатора, так что длина ключей всегда одинаковая, по крайней мере пока вы не исчерпаете текущую разрядность).
Неактивен
Также можно динамически переводить из одной системы счисления в другую, без кэширования подобных символьных идентификаторов в базе данных.
Неактивен
To estic:
Спасибо за подсказку о триггерах - не использовал их, но имею поверхностное представление и читал теорию.
В самом вопросе меня больше интересовал СПОСОБ внедрения (приклеивания, вписывания) тех 8-символьных ключей в поле id каждой записи, а не преобразования самих ключей. Я даже подумал о цикле по записям, но не нашёл в MySQL ничего подходящего для моего случая - как обратиться внутри цикла к ОЧЕРЕДНОЙ записи, чтобы присвоить ей ОЧЕРЕДНОЕ значение, сгенерированное хранимой процедурой. Попробую поупражняться с триггером обновления.
Если и в таком способе мне не хватит знаний и смекалки для успеха - что ж, всегда есть способ "лома": например, можно выгрузить все нужные данные в dbf-таблицу, "вшить" в них ключи в цикле FoxPro (он хоть и почти мёртвый, но подобные процессы в нём реализуются элементарно) и потом загрузить уже обновлённые данные на свои места в таблицах MySQL.
В любом случае - спасибо за подсказку о триггерах.
Неактивен