浏览全部文档 · 12/37

功能简介

Table 定义名称、权限、Row Security、启用状态、Columns 与 Indexes;Column 用明确类型约束 Row 字段。AppBase 支持文本、数值、布尔、时间、枚举、关系和地理等列类型,结构变更可能进入异步状态。

当前支持范围

  • 数据表(SUPPORTED):管理 Table、索引、表级权限、行级安全开关与可用状态。
  • 类型化列(SUPPORTED):为表定义文本、数值、布尔、时间、枚举、地理与关系等类型化 Column;结构变更可能异步完成。

适用场景

  • 为业务对象建立可验证的数据结构。
  • 使用必填、默认值、数组和关系约束输入。
  • 为查询提前规划 Index。

前置条件

  • Database 已存在且可用。
  • 服务端 Key 拥有 Table/Column 写 Scope。
  • 已评估新增必填列、唯一索引和关系的现有数据影响。

Console 操作路径

Console → Project → Databases → Database → Create table。进入 Table → Columns 或 Indexes 管理结构;Rows 页面只用于数据,不应代替结构设计。

SDK 示例

SDK · TypeScript
import { Client, TablesDB, ID } from 'appbase-console-sdk';

const client = new Client()
  .setEndpoint('https://<APPBASE_HOST>/v1')
  .setProject('<PROJECT_ID>')
  .setKey('<API_KEY>');
const tables = new TablesDB(client);

await tables.createTable({
  databaseId: '<DATABASE_ID>',
  tableId: ID.unique(),
  name: 'articles',
  rowSecurity: true,
  enabled: true
});

REST 示例

REST · Bash
curl 'https://<APPBASE_HOST>/v1/tablesdb/<DATABASE_ID>/tables' \
  -X POST \
  -H 'X-Appwrite-Project: <PROJECT_ID>' \
  -H 'X-Appwrite-Key: <API_KEY>' \
  -H 'Content-Type: application/json' \
  --data '{"tableId":"unique()","name":"articles","rowSecurity":true,"enabled":true}'

权限模型

Table/Column 管理是高权限结构操作;Row Security 打开后,数据请求同时检查 Table 与 Row Permission。列定义不会自动放宽读取或写入权限。

常见错误

现象处理建议
Column 状态处于 processing等待异步 Worker 完成后再写依赖该列的数据。
400 或 query invalid检查类型、默认值、数组、长度和 Index 定义。
409Column key 或 Index key 冲突时调整结构。

当前限制

  • 大型 Table 的结构变更可能需要更长处理时间。
  • 删除或收紧类型可能造成数据不可逆影响。
  • Schema Version 才是保存目标结构历史的增强入口;普通 Column 操作不等于完整版本管理。

Appwrite 兼容说明

Table/Column 对应兼容的数据结构能力,方法签名与类型列表以 AppBase SDK 生成物为准。

AppBase 增强说明

Column 可附加 Comment,Table 结构也可进入 Schema Version 历史。

发布状态和验证 Commit

origin/main 已核验。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353

权威来源文件列表

  • backend-candidate:src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Columns/
  • backend-candidate:src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Create.php
  • backend-candidate:src/Appwrite/Platform/Modules/Databases/Http/TablesDB/Tables/Update.php
  • backend-candidate:tests/e2e/Services/Databases/DatabasesBase.php
  • frontend-candidate:console/src/routes/(console)/project-[region]-[project]/databases/

Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs/products/databases。上游页面不是 AppBase 实现证据。

继续阅读