Files
spdm-backend/1-sql/2026-01-19/pg-/file_storage.sql

61 lines
3.8 KiB
SQL
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.

-- 1. 创建表结构
CREATE TABLE "file_storage" (
-- [兼容模式] 支持 AUTO_INCREMENT
"id" BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
"fileName" VARCHAR(255) NOT NULL DEFAULT '',
"fileId" BIGINT NOT NULL,
"userGroupId" BIGINT DEFAULT NULL,
"tenantId" BIGINT DEFAULT NULL,
"userId" BIGINT DEFAULT NULL,
"dirId" BIGINT NOT NULL,
"fileBizType" INTEGER DEFAULT NULL,
"fileSuffix" VARCHAR(50) NOT NULL DEFAULT '',
-- [兼容模式] 去掉 UNSIGNED使用 BIGINT (范围足够覆盖)
"fileSize" BIGINT NOT NULL,
-- [兼容模式] 支持 DATETIME 类型
"createTime" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
-- [兼容模式] 支持 ON UPDATE 语法,无需触发器实现自动更新
"updateTime" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
"fullPath" VARCHAR(1024) NOT NULL DEFAULT '',
-- [修复核心报错]
-- 将 date_format 替换为标准的提取拼接逻辑,确保是 IMMUTABLE (不可变) 表达式
"createYearMonth" VARCHAR(7) GENERATED ALWAYS AS (
CAST(EXTRACT(YEAR FROM "createTime") AS VARCHAR) || '-' ||
LPAD(CAST(EXTRACT(MONTH FROM "createTime") AS VARCHAR), 2, '0')
) STORED
);
-- 2. 创建索引
CREATE INDEX "idx_dirid_size" ON "file_storage" ("dirId", "fileSize");
CREATE INDEX "idx_userid_size" ON "file_storage" ("userId", "fileSize");
CREATE INDEX "idx_dirid_createtime_size" ON "file_storage" ("dirId", "createTime", "fileSize");
CREATE INDEX "idx_userid_createtime_size" ON "file_storage" ("userId", "createTime", "fileSize");
CREATE INDEX "idx_dirid_createmonth_size" ON "file_storage" ("dirId", "createYearMonth", "fileSize");
CREATE INDEX "idx_userid_createmonth_size" ON "file_storage" ("userId", "createYearMonth", "fileSize");
CREATE INDEX "idx_dir_file_suffix_biz_createtime_size" ON "file_storage" ("dirId", "fileName", "fileSuffix", "fileBizType", "createTime", "fileSize");
CREATE INDEX "idx_filename" ON "file_storage" ("fileName");
-- 3. 添加字段注释
COMMENT ON TABLE "file_storage" IS '文件存储统计主表(支持项目/学科/用户维度的存储占用统计)';
COMMENT ON COLUMN "file_storage"."id" IS '主键ID自增';
COMMENT ON COLUMN "file_storage"."fileName" IS '文件名(含后缀)';
COMMENT ON COLUMN "file_storage"."fileId" IS '文件唯一标识ID关联文件元数据表';
COMMENT ON COLUMN "file_storage"."userGroupId" IS '用户组ID';
COMMENT ON COLUMN "file_storage"."tenantId" IS '租户ID';
COMMENT ON COLUMN "file_storage"."userId" IS '文件所属用户ID';
COMMENT ON COLUMN "file_storage"."dirId" IS '保存所有父目录ID项目/学科等目录的唯一标识)';
COMMENT ON COLUMN "file_storage"."fileBizType" IS '文件业务类型1模型文件 2仿真报告、3计算文件、4曲线文件、5云图文件6网格文件7计算过程文件';
COMMENT ON COLUMN "file_storage"."fileSuffix" IS '文件后缀如txt、jpg、pdf';
COMMENT ON COLUMN "file_storage"."fileSize" IS '文件大小(字节数,存储占用计算依据)';
COMMENT ON COLUMN "file_storage"."createTime" IS '文件创建时间';
COMMENT ON COLUMN "file_storage"."updateTime" IS '记录更新时间(自动更新)';
COMMENT ON COLUMN "file_storage"."fullPath" IS '文件完整路径(冗余字段,优化查询)';
COMMENT ON COLUMN "file_storage"."createYearMonth" IS '创建年月(自动生成)';