4.2 KiB
4.2 KiB
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 为例)
- 打开 SQL Editor → 依次新建 Query 运行 步骤1–4。
- 登出 / 使用普通账号登录,再运行 步骤5 查询验证。
⚠️ 常见问题
-
RLS 阻挡插入
请确认 seed 在 Dashboard 执行,或先SET ROLE service_role;。
不建议在 seed 中禁用 RLS。 -
重复执行报错
脚本为“只创建,不删除”模式:表/索引使用IF NOT EXISTS,触发器/策略使用系统表判断后再创建,可重复执行。若仍报错,请先ROLLBACK;再重试。 -
前端查不到 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