Не устаю удивляться MySQL-у

Я не программист, но периодически приходится писать мелкие программки для собственных нужд. И иногда приходится работать с MySQL, который постоянно удивляет меня, не специалиста по SQL, всякими прикольными запросиками )

Вот последний пример — нужно тупо считать количество открытий различных страниц сайта. Создал табличку с двумя полями — идентификатор страницы и счётчик. Страниц много и они могут добавляться поэтому хотелось бы, чтобы строки с нужным идентификатором автоматически создавались при необходимости, т.е. чтобы не нужно было проверять наличие строки и, в зависимости от результата, либо делать инсерт, либо апдейт. Ну и чтобы счётчик накручивался сразу и без лишних действий, таких как — прочитать предыдущее значение, прибавить к нему 1 и записать новое значение.
Каким-то местом я почувствовал, что такое должно быть в MySQL, ну и действительно — всё это делается одним запросом:
insert into pages_views values (10,1) ON DUPLICATE KEY UPDATE shows=shows+1;

— вставить строку со значениями 10 (идентификатор страницы) и 1 (начальное значение счётчика), а если строка с таким уникальным ключом уже есть, то увеличить значение поля shows на 1.
В моём случае уникальным ключом является поле с идентификатором страницы.

4 комментария

avatar
Я думал, это фича стандартного SQL.
Жаль, что у него начинаются проблемы.
avatar
Ну может и фича стандартного SQL — я не разбираюсь )
Начинаются проблемы у кого? У стандартного SQL или у MySQL? А какие проблемы?
avatar
Не, вот именно, в стандартном SQL нету этой фичи.

Как oracle купил sun, ушел оттуда создатель мускула, будет вести проект сам, но придется менять лицензию. По-тихоньку увольняют сотрудников, отвечающих за опен-сорс проекты.

Твиттер перешел с мускула на монго дб.

Вот такие пироги.
avatar
Да, звучит не очень оптимистично )
Но не думаю, что всё это как-то сильно усложнит жизнь обычным админам и, тем более, конечным пользователям. Я, к примеру, не фанат MySQL, я просто использую то, что наиболее распространено и что поддерживается большинством софта. Будет другая СУБД на этом почётном месте — перейду на неё )
К тому же, почти уверен, что существующих возможностей MySQL хватит ещё надолго, даже если проект закрыть и не выпускать новых версий. А то зачастую складывается ощущение, что какой-либо софт развивают из соображений чего угодно, но только не необходимости качественных изменений, чаще всего из маркетинговых соображений — надо продавать новую версию продукта, т.к. старую уже все кто хотел купили, а деньги нужны. Но при этом старая версия выполняет всё что нужно и как нужно, более того, подавляющее большинство заложенных функций почти не используется. Ну а как заставить людей купить новую версию продукта — сделать её покрасивее, выдумать кучу новых фишек, на которые поведутся люди, несмотря на то, что они им не нужны. Простой пример — MS Word, подозреваю, что с Word 95 вполне можно было бы работать ещё лет сто )))
О чём это я… Что-то меня понесло )))
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.