KDB knowledge

View data page (browse and edit rows)

Look at the rows of a table in the console and change them with forms - add, edit and delete - without writing SQL.

The View data page of the web console (Home menu) shows the tables of the chosen database and the rows inside them. You can add, change and delete rows with a form instead of writing INSERT, UPDATE and DELETE by hand.

Everything it does goes through /exec, so a user may only do what their role allows: a read user sees the rows and no buttons, a write user may change them, and an admin may also make tables.

The screen

+--------------------+------------------------------------------------------------------------+
| TABLES             | trades  timeseries - by DAY          [Add row] [Open in SQL] [Refresh]  |
| [Find a table   ]  | WHERE [ qty > 10                          ] [Apply] [Filter columns...] |
|  trades    69.3M   |      | date       | symbol   | broker   | qty  | rate   |               |
|  items         5   |      | [(all)  v] | [CITY v] | [(all) v]| LONG | DOUBLE |               |
|                    |      | 2026-09-11 | CITY     | 58       |  100 | 512.40 |               |
|                    |      | 2026-09-11 | CITY     | 12       |   50 | 512.00 |               |
| [New table]        | Rows 1-50 of 4,112   < 1 2 3 ... 83 > Last     Per page [50 v]         |
+--------------------+------------------------------------------------------------------------+
PartWhat it is
Left listevery table of the database, with its row count. Type in the box to find one.
New tablea small form for CREATE TABLE; it shows the statement it will run before it runs it (admins only)
WHERE boxan extra condition, exactly as you would write it in SQL. Press Enter or Apply.
Filter columns...tick the columns that get a list of their values in the heading (symbol, date, broker ...). Pick a value from a list to see only its rows; several lists combine. The list holds each different value once, newest first for a time column, at most 500.
Column headsclick one to sort the whole table by it (not only the page); click again for the other direction. A time-series table opens newest first.
Edit / Deletechange or remove that one row
Add rowa form with one box per column
Open in SQLputs the SELECT this page is showing into the Home page (SQL editor), to change it by hand
Pagerpage numbers, < > and Last; 25 to 500 rows a page; how many rows the filters found

The page remembers the table you were looking at, the rows-per-page and each table's filter columns, so coming back opens where you left off. A value list is one SELECT DISTINCT per column, read once per table (and again on Refresh): on a table of many million rows it takes a moment, and the rows show first.

Which tables can be edited

To change or delete one row, KDB has to be able to name that row on its own. That is what a PRIMARY KEY is for.

TableBrowseAdd a rowEdit or delete one row
relational, with PRIMARY KEYyesyesyes
relational, without a keyyesyesno
time-series (TIMESERIES(...))yesyesno

A time-series table has a DEDUP KEY, not a primary key, and the same key may appear more than once. A form that edited "the row" could quietly change several, so the page does not offer it and says why instead. Use the SQL editor on Home with a WHERE you have checked, and run the matching SELECT first to see what it will hit.

What it sends

Nothing is hidden. Each button sends one ordinary statement:

ButtonStatement
Add rowINSERT INTO items (name, qty) VALUES ('bolt', 12)
Save (edit)UPDATE items SET qty = 137 WHERE id = 2
DeleteDELETE FROM items WHERE id = 2
New tablethe CREATE TABLE shown in the form

Example: A table the View data page can fully edit

CREATE TABLE items (
  id     INT PRIMARY KEY AUTO,
  name   STRING NOT NULL,
  qty    INT,
  price  DOUBLE
);
INSERT INTO items (name, qty, price) VALUES ('bolt', 12, 0.45), ('nut', 40, 0.12);
SELECT * FROM items;

Result:

CREATE TABLE items (

table 'items' created

INSERT INTO items (name, qty, price) VALUES ('bolt', 12, 0.45), ('nut', 40, 0.12)

2 row(s) inserted

SELECT * FROM items

id (INT)name (STRING)qty (INT)price (DOUBLE)
1bolt120.45
2nut400.12

(2 rows)

Notes