• Как исправить "subquery returns more than 1 row" в "after update" триггере?

    @NiceDay
    у вас в UPDATE входит два подзапроса. какой-то из них возвращает больше одной строки, что не применимо в данной ситуации.

    например, вот этот блок (SELECT value1 FROM test1) -
    в случае, если ваша таблица test1 содержит больше одной строки, этот запрос вернет их все.
    если вам нужно получить новое значение столбца обновляемой таблицы, вы можете, как заметил комментатор выше, использовать NEW или OLD:
    UPDATE `database`.`test2` SET `value1` = NEW.value1 * 2...


    аналогично предыдущему,
    WHERE (`id` = (SELECT id FROM test1));
    вернет столько строк с одним столбцом id, сколько существует в таблице test1, что не допустимо для оператора равенства.
    если вам нужно обновить строку в таблице test2, id которой такой же, как и id у обновляемой записи в test1, то следует использовать NEW.id и ваш запрос приобретет следующий вид:

    CREATE DEFINER=`root`@`localhost` TRIGGER `afupd_yzv2` AFTER UPDATE ON `test1` FOR EACH ROW BEGIN 
        UPDATE `database`.`test2` SET `value1` = NEW.value1 * 2 WHERE `id` = NEW.id
    END
    Ответ написан
    Комментировать
  • Можно ли переходя по ссылке передать body запроса?

    @NiceDay
    непосредственно переход по ссылке - всегда GET запрос и тела содержать не будет.

    но есть такой трюк - на ссылку навешивается обработчик, который при клике создаст невидимую форму с атрибутом method=POST, добавит её на страницу куда-нибудь в конец body и засабмитит.
    для пользователя всё выглядит как просто переход по ссылке.
    Ответ написан
    Комментировать
  • Как пропустить файл через сервер без загрузки на сервер?

    @NiceDay
    Не сохраняя файл можно отправлять на другой сервер проксируя запрос через nginx.
    По идее будет достаточно добавить location блок с proxy_pass на нужный адрес.
    Если обращаетесь ко второму серверу по имени хоста, то еще следует добавить resolver, я обычно ставлю гугловский 8.8.8.8
    Ответ написан