Object Editor
Object Editor — UI-форма для создания и правки объектов БД (таблицы, view, функции, индексы, типы). Альтернатива ручному CREATE TABLE-ю с form-валидацией и предпросмотром DDL.
Открыть
- В Schema Browser: правый клик на узел → Edit… или + New.
- Из палитры: ⌘+K →
Create table, Create view, и т.д.
Создание таблицы
Форма с разделами:
Основа
- Schema — куда создать (по умолчанию
public)
- Name — имя таблицы (валидация: только латиница, цифры,
_; не зарезервированные слова)
- Comment — опциональное описание (сохранится через
COMMENT ON TABLE)
Колонки
Таблица колонок с кнопкой + Add column. На каждую колонку:
- Name
- Type — выпадающий список с поиском (поддерживаются все стандартные типы Postgres + кастомные из текущей схемы)
- Length / Precision — для
varchar(N), numeric(p,s)
- Nullable — чекбокс (по умолчанию yes)
- Default — значение или выражение (
now(), gen_random_uuid())
- Identity —
GENERATED ALWAYS AS IDENTITY для PK
- Generated —
GENERATED ALWAYS AS (expr) STORED для вычисляемых колонок
- Comment
Constraints
- Primary Key — выбрать одну или несколько колонок
- Unique — добавить уникальные ограничения
- Foreign Keys — мульти-форма с выбором ссылочной таблицы и
ON DELETE / ON UPDATE (NO ACTION, CASCADE, SET NULL, SET DEFAULT, RESTRICT)
- Check — текст SQL-выражения для проверки
Indexes
- + Add index: имя, тип (
btree, hash, gin, gist, brin), колонки, WHERE-условие, INCLUDE-колонки
Предпросмотр DDL
Снизу формы — Preview SQL в свёрнутом блоке. Раскройте — там собранный SQL:
CREATE TABLE public.orders (
id BIGSERIAL PRIMARY KEY,
customer_id BIGINT NOT NULL REFERENCES customers(id) ON DELETE CASCADE,
status TEXT NOT NULL DEFAULT 'pending',
amount_cents BIGINT NOT NULL CHECK (amount_cents >= 0),
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX idx_orders_customer_id ON public.orders(customer_id);
CREATE INDEX idx_orders_status ON public.orders(status) WHERE status != 'archived';
COMMENT ON TABLE public.orders IS 'Customer orders';
Кнопка Apply выполнит транзакцию. Cancel закроет форму без выполнения.
Создание view
- Name + Schema
- Definition —
SELECT-запрос (с автокомплитом и подсветкой)
- Materialized — чекбокс. Если
yes — CREATE MATERIALIZED VIEW, и появится опция Refresh policy (manual / on schedule).
- With CHECK OPTION — для updatable views
Создание функции / процедуры
- Name, Schema, Returns — тип возврата (
integer, void, setof orders, и т.д.)
- Language —
plpgsql, sql, plv8 (если установлено)
- Volatility —
IMMUTABLE, STABLE, VOLATILE
- Security —
INVOKER (по умолчанию) или DEFINER
- Body — SQL-редактор с подсветкой
Редактирование существующего объекта
Та же форма, но поля предзаполнены. ide99 покажет diff между текущим и новым DDL — чтобы было видно, что именно меняется. На prod — потребуется подтверждение через имя объекта.
Drop с зависимостями
При попытке удалить таблицу, на которую ссылаются FK или view, ide99 покажет:
Удаление orders затронет 2 объекта:
- View
v_revenue использует столбец orders.amount_cents
- Foreign key
order_items.order_id_fkey ссылается на orders.id
[ Cancel ] [ Drop CASCADE ]
CASCADE — обычно опасно, но иногда нужно. ide99 покажет полный список того, что упадёт за компанию.
Что дальше