sqlbeginner

INSERT ... RETURNING for Immediate Results

Use RETURNING clause to get inserted rows immediately without a separate SELECT query.

sql
-- Basic RETURNING
INSERT INTO users (name, email)
VALUES ('Alice', 'alice@example.com')
RETURNING id, created_at;

-- Bulk insert with RETURNING
INSERT INTO tags (name)
VALUES ('javascript'), ('typescript'), ('react')
RETURNING id, name;

-- CTE chained insert
WITH new_user AS (
  INSERT INTO users (name, email)
  VALUES ('Bob', 'bob@example.com')
  RETURNING id
)
INSERT INTO user_profiles (user_id, bio)
SELECT id, 'New user'
FROM new_user
RETURNING *;

-- UPDATE ... RETURNING
UPDATE orders
SET status = 'shipped', shipped_at = NOW()
WHERE id = 42
RETURNING id, status, shipped_at;

-- DELETE ... RETURNING
DELETE FROM sessions
WHERE expires_at < NOW()
RETURNING user_id, expires_at;

Use Cases

  • getting generated IDs
  • chained inserts
  • avoiding round trips

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.