Допустим надо проверить, что поле входит в какое-то множество. Очевидно, что надо использовать конструкцию типа
field IN (1, 2, 3, ...) Но что если это множество пустое. Как его указать?
field IN (???)one flew east one flew west one flew over the cuckoo's nest
field IN (1, 2, 3, ...) field IN (???)ALTER TABLE table_name SET SCHEMA new_schema;
ALTER FUCNTION function_name SET SCHEMA new_schema;
-- и т.д.
IF TG_OP = 'DELETE' THEN
RENAME OLD TO myrow;
ELSE
RENAME NEW TO myrow;
END IF;
-- Далее работаем с myrow не задумываясь о типе триггера
SELECT
contype, -- тип ограничения (PK/FK)
attname -- имя атрибута
FROM pg_constraint
JOIN pg_attribute ON
attrelid = conrelid AND
attnum = any(conkey)
WHERE
contype in ('p', 'f') AND
conrelid = 'yourtablename'::regclass::oid
ORDER BY 1, attnum;
Добавлены строковые функции: concat(), concat_ws(), left(), right()
и reverse().
Pavel Stehule, проверено мной.(while [ $(ps -p 10708 ho pid) ]; do sleep 5; done; echo -e "\a") &Распознавание функциональной зависимости от первичных ключей. Это позволяет
колонкам не присутствовать в GROUP BY, если там присутствует первичный ключ.
В дальнейшем нам стоит также разрешить функциональную зависимость от UNIQUE
ограничений при условии, что колонка помечена как NOT NULL, но это будет ждать пока
NOT NULL ограничения не будут представлены в pg_constraint, т.к. нам будут нужны
pg_constraint OID-ы для всех условий, где будет разрешаться функциональная
зависимость.
Peter Eisentraut, проверено Alex Hunsaker и Tom LaneSELECT field_a, field_b, count(*)
FROM TABLE
GROUP BY field_aСнижает уровни блокировок CREATE TRIGGER и некоторых действий ALTER TABLE,
CREATE RULE. Убирает прописанные на прямую в коде режимы блокировок, используемые во
множестве команд изменения DDL, позволяя более легко менять уровни блокировок в
будущем. Реализован начальный анализ DDL подкомманд, так что многие уровни блокировок
теперь будут ShareUpdateExclusiveLock или ShareRowExclusiveLock, позволяя конкретным
коммандам не блокировать чтение/запись. Это первое изменение из числа запланированных
в этом направлении; будет нужна дополнительная документация когда весь проект
завершится.SELECT table_name
FROM information_schema.columns
WHERE column_name = 'put_column_name_here';
CREATE TABLE IF NOT EXISTS.
Reviewed by Bernd Helmle.$ create table if not exists tesit (x text);
CREATE TABLE
$ create table if not exists tesit (x text);
NOTICE: relation "tesit" already exists, skipping
CREATE TABLEWITH t AS ( -- Эта часть Model.
SELECT quote_ident(datname) AS d
FROM pg_database WHERE NOT datistemplate
)
SELECT
'pg_dump -U postgres -Fc --file=' || d || -- Эта часть View.
to_char(now(),'_YYYYMMDD') ||
'.pgbackup' || ' '|| d
FROM t;psql -Atqf backup.sql | shДобавляет команду \conninfo в psql, показывающую информацию о текущем соединении.
David Christensen. Проверено Steve Singer. Некоторые изменения от меня.Значение standard_conforming_strings по умолчанию теперь on.
Это изменение должно быть доведено до сведения разработчиков драйверов и в
замечаниях к релизу должно быть указанным как не совместимое с предыдущими
релизами.$ SELECT 'guns \'n roses';
?COLUMN?
---------------
guns 'n roses
(1 row);; Dired Mode extra features
(load "dired-x.el")
(setq dired-omit-files
(concat dired-omit-files "\\|^\\..+$"))
(dired-omit-mode 1)