Files
chongming-license-gui/docs/pg_schema.sql
T
2026-09-22 16:08:12 +08:00

61 lines
2.7 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- chongming 机器码授权工具 —— PostgreSQL 台账建表脚本
--
-- 什么时候需要它?
-- 工具**首次连接**会自动执行等价的 DDL(CREATE TABLE IF NOT EXISTS)。
-- 但如果数据库账号没有建表权限,自动建表会失败并提示你执行本脚本 ——
-- 此时请把本文件交给 DBA,在目标库上执行一次即可。
--
-- 执行方式(二选一):
-- psql -h <主机> -p 5432 -U <用户> -d <库名> -f docs/pg_schema.sql
-- 或把下面的语句贴进任意 SQL 客户端执行。
--
-- 账号权限建议:
-- * 日常使用(签发入库、续期改备注):需要 SELECT / INSERT / UPDATE / DELETE
-- * 只做查询检索(如商务查台账):给只读账号 SELECT 即可,工具里"续期/删除"会失败
-- * 建索引/建表:仅首次需要;之后可以收回 DDL 权限
--
-- 注意:本表含客户名称与设备机器指纹,属厂商内部数据,请按公司数据规范授权与备份。
BEGIN;
-- 1) 台账主表。列与本地 SQLite 版**逐列一致**(含列序),
-- 日期列刻意用 TEXT:工具依赖 ISO 日期字符串比较来排序,改成 date 类型会改变语义。
CREATE TABLE IF NOT EXISTS public.issued_licenses (
lic_id TEXT PRIMARY KEY,
machine_code TEXT NOT NULL,
customer TEXT NOT NULL DEFAULT '',
note TEXT NOT NULL DEFAULT '',
plugins_json TEXT NOT NULL,
sources_json TEXT NOT NULL,
not_before TEXT,
expires_at TEXT,
issued_at TEXT NOT NULL DEFAULT '',
kid TEXT NOT NULL DEFAULT '',
public_key_fp TEXT NOT NULL DEFAULT '',
license_json TEXT NOT NULL,
source TEXT NOT NULL DEFAULT '',
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
-- 2) 三个检索索引(与本地版一致:机器码 / 客户 / 到期日)
CREATE INDEX IF NOT EXISTS idx_lic_machine ON public.issued_licenses (machine_code);
CREATE INDEX IF NOT EXISTS idx_lic_customer ON public.issued_licenses (customer);
CREATE INDEX IF NOT EXISTS idx_lic_expires ON public.issued_licenses (expires_at);
-- 3) 结构版本元数据表:工具用它判断"这个库是不是自己这一版建的",
-- 版本不匹配时会拒绝使用并提示先导出台账。
CREATE TABLE IF NOT EXISTS public.chongming_schema (
name TEXT PRIMARY KEY,
version INTEGER NOT NULL
);
INSERT INTO public.chongming_schema (name, version)
VALUES ('issued_licenses', 1)
ON CONFLICT (name) DO NOTHING;
COMMIT;
-- 若要用非 public 的 schema,请把上面的 public 换成目标 schema,
-- 并在工具的「连接设置…」里把 Schema 填成同一个名字(工具会按该 schema 读写)。