Edit values
You can edit values inline in the grid — double-click a cell. ide99 shows the SQL before running and saves changes as a precise UPDATE.
When editing is available
Only when the query was a clear SELECT from a single table with a primary key or unique column. ide99 detects this automatically:
- ✓
SELECT * FROM orders WHERE id = 123 — editable
- ✓
SELECT id, status FROM orders LIMIT 10 — editable
- ✗
SELECT count(*) FROM orders — nothing to edit
- ✗
SELECT * FROM orders JOIN customers ... — multiple tables, ambiguous
- ✗
SELECT * FROM v_orders_summary — view (unless updatable)
When editing isn't possible — the ✏ icon in the cell corner is gray; double-click does nothing.
Simple edit
- Double-click a cell → it becomes editable.
- Enter the new value.
- Enter or click outside → a dialog opens with the SQL:
UPDATE orders
SET status = 'paid'
WHERE id = 123;
- Apply runs the query. Cancel rolls back the UI edit.
Per-type editing
| Column type |
How it edits |
text, varchar |
Inline, plain input |
integer, bigint, numeric |
Inline, numeric validation |
boolean |
Checkbox |
date, timestamp |
Date picker (calendar popup) |
jsonb, json |
Double-click opens the JSONB editor |
enum |
Dropdown of allowed values |
array |
Double-click → modal with array editor |
bytea, geometry, vector |
Read-only in the grid; edit only via SQL |
Multiple changes — batch
If you edit several cells in a row (without saving) — changes accumulate. At the bottom, an indicator shows 3 unsaved changes.
Apply all shows a combined preview:
BEGIN;
UPDATE orders SET status = 'paid' WHERE id = 123;
UPDATE orders SET status = 'shipped' WHERE id = 124;
UPDATE orders SET notes = 'priority' WHERE id = 125;
COMMIT;
In a transaction — either all apply or none. Discard all rolls back UI edits.
Insert a new row
The + New row button at the bottom adds an empty row with server defaults where they exist.
After filling — Apply → executes INSERT INTO ... VALUES ....
Delete a row
Right-click any row → Delete row → opens a confirmation with DELETE FROM ... WHERE pk = ....
On prod connections with Confirm destructive on, you'll need to type the PK value (even for one row).
Read-only situations
| Situation |
What happens |
| Connection in read-only |
Grid shows a 🔒 badge, editing disabled |
view without an INSTEAD OF trigger |
Editing blocked, tooltip explains why |
GENERATED ALWAYS column |
Grayed out, can't edit |
SELECT ... FOR UPDATE NOWAIT and the row is locked |
ide99 shows the lock error before edit starts |
Next