30 июля 2016 г.

MS SQL и PHP PDO: вставка с триггером

В общем история такая.
Существует таблица в БД MS SQL с которой связан триггер. Триггер отвечает за аудит — сохраняет всю информацию о пользователе и его действиях при вставке, обновлении или удалении записи в этой таблица.

Так вот, столкнулся с проблемой, что при вставке данных, используя PHP PDO (в основе Zend Framework), вставка происходила успешно, но Zend вываливался в exception и не было ясно, что с этим делать. Я попытался создать новую таблицу, с парой полей, привязать к ней аналогичный триггер и получил ту же самую ошибку.

Изучая вопрос, я где-то натыкался на совет, что нужно указать NOCOUNT ON;
Я предполагаю, что PDO ждет ответ о изменении одного поля в результате вставки (обновления, удаления), но получает еще и ответ о срабатывании триггера, который в свою очередь также затрагивает одно поле и в итоговом счете в результата информация о изменении двух полей — это не нравится PDO и мы получаем ошибку.

Повторно эту рекомендацию нагуглить не удалось, но это было первое что я делал — в начале триггера, либо перед выполнением операции вставки я добавлял запрос NOCOUNT ON;, но это не приводило к успеху. И далее, что я только не пробовал — все было безуспешно. Даже поставил довольно классную программу по детальному логгированию всей информации по взаимодействию с MS SQL.

Решение оказалось довольно простым и все-таки использовало NOCOUNT ON; в качестве решения — здесь важным моментом было то, что эту команду обязательно нужно было использовать непосредственно перед запросом вставки в триггере аудита и в моем случае это была команда EXEC выполняющая предварительно сгенерированный запрос.

Проблема решилась.

22 февраля 2016 г.

История первого ремонта. И вообще...

Лето 2013 года, предприняты шаги по приобретению своего жилья.
Найдена новостройка, которую вот-вот сдадут. К слову, таких домов, соответствующих некоторому набору субъективных требований (вроде цены, района, сдачи с черновой отделкой и т.п.) было раз, два и обчелся.

Выбор сделан. 1 комнатная квартира, площадью 54кв.м. Добавкой лоджия на 6 кв.м. Оформлена ипотека. В Газпромбанке — оказался самым демократичным по процентам из тройки популярных банков.

Бюрократия, как и везде, не сказал бы, что зашкаливает.

На все процедуры от выбора до оформления потрачено около месяца, а то и меньше. Наступило ожидание сдачи дома. По обещаниям застройщика, дом стоило ожидать в октябре-ноябре. Внешне дом выглядел законченно. Но, судя по всему, требовалось много доделок и урегулирований, чем застройщик и занимался до марта 2014 года. Благо сдали. Вначале без воды и электричества. Хоть с отоплением. Постепенно подключили все остальное.

Т.к. ремонт по максимуму было решено делать своими силами, время ожидания было наполнено планированием и проектированием всего и вся. Это размышление над функциональным и красивым интерьером, уйма схем и чертежей, куча вариаций. И разведывательные походы по строительным/мебельным магазинам. Просмотренно 100500 тематических статей, видеороликов, форумов. Время проектирования-думания-изучения заняло как минимум 20% времени от всего времени потраченного на ремонт (это 9 месяцев). На самом деле очень важный этап, без которого ремонт своими силами нормальный не сделать.

Вот так выглядит квартира на плане от застройщика.