WhyPik DocsVề trang chính

Lập trình viên / Tra cứu

Tham chiếu cấu trúc bảng

Schema JSON là hợp đồng giới hạn rõ ràng, không phải SQL tùy ý.

Table và Column

TrườngÝ nghĩa
tables[].nameTên duy nhất, chữ thường [a-z][a-z0-9_]{0,47}; không pg_/wpk_ hoặc __
columns[].typeuuid, integer, bigint, numeric, text, boolean, date, timestamptz, jsonb
primaryMỗi bảng đúng một PK UUID/integer/bigint, không null
nullable / uniqueBoolean; dùng rõ theo nhu cầu
max_lengthChỉ text, tối đa 16384; mặc định 4096
default{kind:literal,value}, {kind:uuid}, {kind:now}, {kind:identity} theo kiểu
identityowner hoặc group trên cột UUID; liên kết Project Auth, khác default identity sequence
references{table,column,alias,reverse_alias?,on_delete:restrict}
indexes[{name,columns:[...],unique:false}]; tối đa bốn cột/index
policiesChỉ sửa qua quyền/schema quản lý; form import không cấp quyền

Giá trị dữ liệu

integer là số nguyên 32-bit. bigint và numeric là chuỗi chính xác; numeric tối đa 38 chữ số, 12 số thập phân. date: YYYY-MM-DD; timestamptz: ISO-8601 có múi giờ. jsonb là giá trị JSON tối đa giới hạn mỗi ô. UUID dùng định dạng chuẩn.

Thay đổi bảng hiện có

Dùng UI Cấu trúc bảng/Quyền truy cập hoặc PATCH schema với revision hiện tại. Đổi tên phải khai báo changes rõ. Xóa cột/bảng cần bản sao đã kiểm chứng và xác nhận dự án; không suy đoán đổi tên từ diff. Không sửa kiểu/PK/identity/max_length của cột hiện có trong bản này.

Database được quản lý bằng Migration

Các loại dữ liệu và giới hạn compiler trong bài vẫn áp dụng. Với mode migration, sửa schema.json rồi sinh diff/plan; Dashboard và Admin SDK không PATCH trực tiếp cấu trúc. Tên bảng/cột xuất hiện hoặc biến mất không tự được coi là rename.

Thêm cột không tự cấp quyền client; cập nhật policy/bindings trong cùng kế hoạch hoặc migration riêng. Xem bài Migration để phân biệt thay đổi thêm, constraint-sensitive, permission-widening và destructive.

Trong bài này