• Как правильно написать триггер на сумму чисел строки при появлении новой записи?

    phoinixrw
    @phoinixrw
    Архитектор информационных систем
    В комментарии автора ошибка.
    Для переопределения значения поля не требуется выполнять отдельное обновление, достаточно его пределить ДО вставки:

    CREATE TRIGGER maintable_pricetable_sum_trigger_insert
             BEFORE INSERT
                ON maintable_pricetable
          FOR EACH ROW
    BEGIN
        SET NEW.outcome = (NEW.transparency + NEW.color + NEW.pis + NEW.purity + NEW.intensity + NEW.typicality + NEW.purity2 + NEW.intensity2 + NEW.persistence + NEW.typicality2 + NEW.harmony);
    END;


    При этом, не совсем очевидно, почему сумма не считается во время UPDATE? Для этого требуется создать такой же триггер на UPDATE:

    CREATE TRIGGER maintable_pricetable_sum_trigger_update
             BEFORE UPDATE
                ON maintable_pricetable
          FOR EACH ROW
    BEGIN
        SET NEW.outcome = (NEW.transparency + NEW.color + NEW.pis + NEW.purity + NEW.intensity + NEW.typicality + NEW.purity2 + NEW.intensity2 + NEW.persistence + NEW.typicality2 + NEW.harmony);
    END;


    И кстати, когда бы автор дошел до момента обновления суммы во время UPDATE, то он бы начал веселую борьбу с рекурсией.
    Ответ написан
    Комментировать
  • Как получать Id фотографии в телеграмм?

    @o5a
    Зависит еще от того, как эту фотографию скинули. Если отправлять без сжатия, то оно придет в исходном виде, с типом (content_type) 'document', а идентификатор будет
    message.document.file_id

    Если со сжатием (по умолчанию для фото), то оно придет типа 'photo', а идентификаторов будет несколько, под разные разрешения, в таком виде:
    message.photo - список из разных разрешений со своими file_id

    Т.е. для получения идентификатора нужно из списка выбрать нужный вариант.
    Например, так (максимальный размер)
    photo = max(message.photo, key=lambda x: x.height)
    file_id = photo.file_id
    Ответ написан
    Комментировать
  • Как исправить соотношение видео в боте telebot?

    @Alexa2007
    Когда отправляешь что-то через телегу, она сохраняет это на своих серверах.
    Отправь боту один раз видео, а потом отправляй всем ID этого видео, А телега сама всё сделает, а файл с телефона можно даже удалить...он на сервере
    @bot.message_handler(content_types=["video"])
    def confirming(message):
        if message.content_type == 'video':
            print(message.video.file_id) #ID видео файла на сервере 
            bot.send_video(message.chat.id, message.video.file_id)# Отправляешь его сам себе
        else:
            pass
    Ответ написан
    Комментировать