# Analytics 测试数据快速开始(更新版) > 本文档基于 **2026-01 修订后的数据库脚本**(含 RLS 安全、中文注释、幂等执行) > > 请务必按下述 **执行顺序** 依次运行 SQL,否则会出现外键或 RLS 限制导致的插入失败。 --- ## 🗂️ SQL 执行顺序(只创建,不删除) | 步骤 | 作用 | 文件 | 需要权限 | | ---- | ----------------------------------------------------------------------------- | --------------------------------------- | ----------------------------------------------------- | | 1 | 创建基础业务表(orders/users/user_sessions/products/merchants/page_views 等) | `01_create_tables.sql` | 任意(不清空数据,可重复执行) | | 2 | 创建用户资料表(ak_users)+ RLS + 用户资料函数 | `../../user/test/USER_AUTH_SCHEMA.sql` | 任意(不清空数据,可重复执行) | | 3 | 创建 auth.users → ak_users 触发器 | `../../user/test/USER_AUTH_TRIGGER.sql` | **需要访问 auth schema(建议 Dashboard SQL Editor)** | | 4 | 创建 analytics_* 表 + RLS + RPC | `ANALYTICS_DB_SCHEMA.sql` | 任意(不清空数据,可重复执行) | | 5 | 插入业务侧测试数据 | `02_insert_test_data.sql` | **service_role**¹ | | 6 | 插入 analytics_* 测试数据 | `ANALYTICS_TEST_SEED.sql` | **service_role**¹ | | 7 | (可选) 查询验证 | `03_test_queries.sql` | 登录用户 | ¹ *原因:两份 seed 脚本要写入带 RLS 的表,直接用 anon / authenticated 会被策略拦截。Dashboard SQL Editor 默认具备等价于 postgres/service_role 的权限,可直接执行;CLI 请使用 `psql … -U postgres`(或你的 DB 管理员账号)执行。* --- ## 🚀 执行步骤(以 Supabase Dashboard 为例) 1. 打开 **SQL Editor** → 依次新建 Query 运行 *步骤1–4*。 2. 登出 / 使用普通账号登录,再运行 *步骤5* 查询验证。 --- ## ⚠️ 常见问题 1. **RLS 阻挡插入** 请确认 seed 在 Dashboard 执行,或先 `SET ROLE service_role;`。 不建议在 seed 中禁用 RLS。 2. **重复执行报错** 脚本为“只创建,不删除”模式:表/索引使用 `IF NOT EXISTS`,触发器/策略使用系统表判断后再创建,可重复执行。若仍报错,请先 `ROLLBACK;` 再重试。 3. **前端查不到 seed 数据** 登陆用户的 `auth.uid()`必须与 seed 中 `orders.user_id` 等字段匹配;否则受 RLS 影响会看不到。测试时可在 seed 中把某条 `user_id` 改成你自己的 UID。 --- ## 🔐 权限矩阵(简版) | 表 / 功能 | anon | authenticated | service_role | | -------------------------------------- | ----------------- | ------------------- | ------------ | | `orders / order_items / user_sessions` | Insert❌ / Select❌ | ✅(仅本人) | ✅(全部) | | `products / merchants` | Select✅ | CRUD⚠️ (受策略) | ✅ | | `page_views` | Insert✅ / Select❌ | Select✅(本人) | ✅ | | `analytics_*` 表 | ❌ | ✅ (按 owner/shared) | ✅ | | RPC (analytics) | ❌ | ✅ | ✅ | > 详细策略请见各 SQL 文件内注释。 --- ## 🧹 清理 执行 `04_cleanup.sql` 可按时间 / 用户删除测试数据,脚本已更新为幂等。 --- 最后更新:2026-01-26