Есть таблица в базе данных. В таблице есть поле data типа xml. В базе множество записей, с разными xml документами(хранящимися в data). Как выбрать все записи, в которых присутствует только нужный тег, например: title
Мне надо что-то типа:
SELECT data FROM table WHERE data ilike "%title%" -конечно, это чушь, но может будет понятнее, что нужно.
Добрый день.
На таблицу test_1 навешан триггер 'BEFORE DELETE on test1 FOR EACH ROW'.
Триггерная функция вызывает удаление строки из таблицы test_2, на которой тоже висит триггер 'AFTER DELETE on test_2 FOR EACH ROW'.
Предполагалось, что после отработки второго триггера, управление вернется первому. Но нет, все заканчивается удалением из test_2.
Подскажите, есть ли решение. Пожалуйста
Добрый день.
На удаленном сервере Postgre есть пользовательская функция, которую нужно вызвать из веб-приложения на php.
Вызов вида
Код:
$переменная='значение_переменной'; $sql="SELECT * FROM функция_на_сервере($переменная);"; $res=pg_query($db,$sql);
не проходит
приходит ошибка: column "значение_переменной" does not exist
Как мне кажется, на сервере при подстановке получается что-то такое:
Код:
SELECT что_то FROM откуда_то WHERE значение_столбца=значение_переменной;
а должно быть так:
Код:
Доброго времени суток!!!
Есть триггерная функция. В ней выполняется SELECT. Как исключить новую запись из запроса??? То есть, я создаю новую запись или же обновляю старую, после чего триггер выбирает уже имеющиеся записи и сравнивает. Но он собстно выбирает все вместе с новой записью(логично т.к. триггер AFTER)
з.ы. Представить код сейчас нет возможности. Заранее спасибо!!!
у меня есть ряд запросов, выполняющихся как
DO LANGUAGE plpgsql $$
begin
--запросы
END
commit;
$$;
В частности, внутри подготавливаются prepared функции.
Если функции уже созданы, то запрос вылетает с исключением. Для меня это очень печально. Перехватывать это исключение в программе не вариант.
Пытался вставить перед коммитом EXCEPTION WHEN duplicate_prepared_statement THEN
но postgre все равно ругается на commit;
ERROR: SPI_execute_plan_with_paramlist failed executing query "commit": SPI_ERROR_TRANSACTION
подскажите, что делать?
Задача: написать триггер который будет вести лог изменении данных таблицы.
Нюанс: триггер должен работать независимо от изменения структуры таблицы.
Пример:
В таблице три поля- имя, фамилия, отчество. При вставке записи триггер пишет в лог 3 записи
(имя поля) (значение)
1.имя иван
2.фамилия иванов
3.отчество иванович
Д.д! Народ, копирую данные из Oracle в Pg. Хотел бы уточнить являются ли фактически идентичными типы полей NUMERIC(8,0) и INTEGER? Или есть принципиальные различия в хранении (больше/меньше памяти) или скорости доступа...
И ещё... VARCHAR(10) и NUMERIC(10,0) для поля в котором хранится числовое значение (идентификационный код) над которым не будут производиться арифметические операции - что предпочтительнее?
Делаю запрос к БД
SELECT COALESCE(CAST(SUM(CASE WHEN flg_f_cbet THEN 1 ELSE 0 END) AS real) / NULLIF(SUM(CASE WHEN flg_f_cbet_opp THEN 1 ELSE 0 END), 0), -1) AS result FROM holdem_hand_player_statistics AS PS HAVING COALESCE(CAST(SUM(CASE WHEN PS.cnt_p_raise > 0 THEN 1 ELSE 0 END) AS real) / NULLIF(SUM(CASE WHEN PS.id_hand > 0 THEN 1 ELSE 0 END), 0), -1) < 10
почему то запрос полностью игнорирует все что идет после HAVING как буд то там нет никакого условия
то есть что с ним что без него результат один
Здравствуйте!
В mysql есть возможность использовать пользовательские переменные в запросах, что позволяет оптимизировать определенные вычисления.
Простой пример - есть таблица pogoda с двумя полями - t и d, t - это временная метка, а d - это результат измерения погоды. Требуется найти максимальный перепад.
Срабатывает следующая конструкция:
Код:
SET @data=NULL, @next_data=NULL, @max_value=0;
SELECT @next_data:=`d` `nextdata`,IF (@next_data - @data>@max_value, @max_value:=@next_data-@data, @max_value), @data:=d FROM `pogoda`;
SELECT @max_value;
есть таблица ЗАКАЗЫ
CREATE TABLE ORDERS (
id SERIAL NOT NULL
, price INT
, discount INT
, id_customer INT
, order_date DATE
, is_pay BOOLEAN
, delivery_date DATE
, PRIMARY KEY (id)
);
И есть триггер на добавление и обновление в эту таблицу.
CREATE TRIGGER trigger2
AFTER INSERT OR UPDATE
ON orders
FOR EACH ROW
EXECUTE PROCEDURE func1();
В триггерной функции ORDERS.price устанавливается в 300.
CREATE OR REPLACE FUNCTION func1()
RETURNS trigger AS
$BODY$BEGIN
NEW.price=300;
END;$BODY$