Step 7: Основы SQL для DevOps
Ниже идет реклама и ссылки.
В данном видео я рассказываю о SQL.
Полезные ссылки:
YouTube канал: https://www.youtube.com/@MainDevOps
Telegram канал: https://t.me/devops_spb_ru
Telegram чат: https://t.me/devops_im
Вернуть значение строки после команды UPDATE в MySql
Есть несколько способов. Самый простой из них - это использовать вычисления.
Рассмотрим на примере. Пусть в некоторой процедуре есть команда обновления остатка товара на складе:
UPDATE GOODS
SET ITEMS_COUNT = ITEMS_COUNT - V_SOLD_COUNT
WHERE ID = P_ID_GOOD;
После изменения остатка, если его новое значение стало меньше нуля, нужно выдать ошибку и откатить транзакцию (и ещё можно журналировать эту ошибку).
Итак, как получить новое значение строки, которое устанавливается в столбце ITEMS_COUNT в результате команды UPDATE для последующего его анализа.
MySql поддерживает разные типы переменных: с собачкой (@) и без этого предварительного символа. Первые переменные называются пользовательскими, а вторые - локальными. Ещё есть системные переменные (с двумя собачками), но о них в другой раз.
Пример присвоения значения пользовательской переменной (с собачкой):
SET @Var1 = 5;
Пример присвоения локальной переменной (без собачки):
SET var1 = 5;
Пользовательские переменные (с собачкой) можно использовать как очень мощный инструмент в SQL-командах. Например, присвоив значение переменной, можно тут же использовать его. Пример:
SELECT @var1 := 5 SOME_FIELD
FROM DUAL
В результате и в переменную запишется число 5 и можно сразу использовать значение переменной, например, чтобы вывести её командой SELECT (как в примере выше).
И нашу задачу, из-за которой я решил написать эту мини статью, это очень хорошо решает. Прямо в команде UPDATE мы запишем новое значение для строки в переменную и тут же используем её:
UPDATE GOODS
SET ITEMS_COUNT = @var1 := ITEMS_COUNT - V_SOLD_COUNT
WHERE ID = P_ID_GOOD;
Текущее значение строки за вычетом V_SOLD_COUNT будет присвоено переменной @var1 и её значение сразу же будет использовано для команды UPDATE.
И еще теперь переменную @var1 можно использовать и после команды UPDATE. Проверим установленное в строке значение и, если оно стало меньше нуля, откатим операции и выдадим ошибку.
UPDATE GOODS
SET ITEMS_COUNT = @var1 := ITEMS_COUNT - V_SOLD_COUNT
WHERE ID = P_ID_GOOD;
IF @var1 < 0 THEN
...
ROLLBACK;
SIGNAL ....;
ЛОГИРУЕМ ФАКТ ОШИБКИ;
END IF;
Использование переменной в команде UPDATE позволит запомнить новое значение строки и на основе него строить последующую логику (например, проверить на отрицательное значение). Только необходимо принимать во внимание наличие триггера на команду UPDATE уровня строки. Вдруг непосредственно перед установкой нового значения оно может быть подкорректировано триггером. Тогда лучше запоминать новое установленное значение прямо в триггере. Для справки: некоторые СУБД поддерживают опцию RETURNING DML команд, тогда финальное сохранённое значение в любом столбце можно получить и без вычислений, и не обращая внимание на наличие триггеров.
Подобные и другие задачи решаем на нашем онлайн интенсиве по разработке в MySql. Следующий поток уже в марте! Записывайся! Буду тебя ждать!
Поставь лайк, если понравилась, статья или подпишись!
Задача по SQL. Вывести текст по вертикали
Вывод текста построчно. Использование рекурсии. CONNECT BY
Телеграм-канал: https://t.me/sql_oracle_databases
Дешевый ChatGPT-4 без VPN
Многие сталкиваются с проблемой получения доступа к OPENAI или переживают из-за большой цены за подписку. Специально для вас, мы встроили GPT-4 в Telegram бота, который также работает с изображениями. Наверное, это лучший бот, которого вы когда-либо видели. Тестируйте: t.me/Gpt4_NeuroBot?start=14
Продолжение поста «Продолжение поста "Приглашаю к изучению python"»8
24 подписчика, доброе утро.
Вчера получил сертификат, сегодня начинаю второй двухнедельный спринт.
Подведу итоги первых двух недель обучения.
Я прокачался в области языка запросов к базам данных, это факт. Иногда смотрю на количество строк в запросе и думаю, ого. И я ещё понимаю, что он делает. И он ещё и работает.
SQL задолбал) десять дней подряд утром и вечером пилить запросы и не высыпаться - это непривычно.
Откликаюсь на вакансии, на собесы не зовут. Что ж, продолжаем учёбу. Кстати, кто искал первую работу через хх, поделитесь, что сделать с резюме, чтобы звали.
Всем до завтра , спасибо за внимание.
Продолжение поста «Продолжение поста "Приглашаю к изучению python"»8
Десять вкатунов собрались SQL-ить.
Один из них ленился, и их осталось девять.
На Вайлдберриз зашли и книги заказали.
Сгорел один учебник, и восемь им прислали.
Восемь вкатунов MySQL скачали.
Один скачал с трояном, и его послали.
Семеро вкатанцев зашли на sql-ex.
Один прошёл по ссылке, чтоб увеличить пенис.
Шесть вкатунов сидели и селекты пилили.
Один писал без КАПСА, и пацаны отшили.
Пять вкатунов писали запросы группировки.
Один не знал про хевинг, и выпал из тусовки.
Четыре вкатуна писали резюме.
Один не врал про опыт, и трое их уже.
Троим эйчар прислал задание на почту.
Одна, правда, была, указана неточно.
Двое вкатунов собесидись с эйчаром.
Один не продал ручку, а просто отдал даром.
Один стажировался два раза по полгода.
Устроился джуном, уволился с завода.
Продолжение поста «Продолжение поста "Приглашаю к изучению python"»8
20 подписчиков, доброе утро.
Вчера решал до 2 ночи, прогресс на скриншоте.
Появилось чувство, что при наличии времени и интернета можно решить любую задачу.
В приложении SQLore прошёл всю теорию, дальше идёт "игра". Сложно, мне нравится.
До завтра!






