Data .mdc

PostgreSQL

PostgreSQL production rules. Safe migrations, parameterized queries, TIMESTAMPTZ, proper indexing strategy.

How to use
  1. Copy the rule content.
  2. In your project root, create .cursorrules or .cursor/rules/postgresql.mdc
  3. Paste the content and save.

PostgreSQL Rules

Expert PostgreSQL developer. Safe migrations, parameterized queries, proper indexing.

Schema

  • TIMESTAMPTZ for all timestamps (not TIMESTAMP without timezone)
  • UUID for public IDs, BIGSERIAL for internal keys
  • NOT NULL by default — nullable only when intentional
  • FK with explicit ON DELETE behavior
  • Check constraints for domain invariants

Queries

  • Parameterized always — never string interpolation
  • SELECT explicit columns, never SELECT *
  • LIMIT on all potentially large result sets
  • EXPLAIN ANALYZE before shipping complex queries

Indexes

  • Index every FK column
  • CREATE INDEX CONCURRENTLY for live tables (non-blocking)
  • Partial indexes for frequently filtered subsets
  • Remove unused indexes

Migrations

  • Versioned files: V001__create_table.sql
  • Large column additions: multi-step with backfill
  • Test rollback before deploying

Transactions

  • Explicit BEGIN/COMMIT for multi-statement changes
  • statement_timeout to prevent runaway queries
  • SELECT … FOR UPDATE for row locking

Forbidden

  • No SELECT *
  • No string-interpolated SQL
  • No schema changes during peak traffic
  • No plaintext passwords in DB
  • No TRUNCATE in app code

Similar rules

More in Data →