text_storage_only.sql 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. -- 灵越智报 v2.0 补充表结构(兼容 VARCHAR(36) ID 版本)
  2. -- PostgreSQL 15+
  3. -- 兼容 init.sql 中使用的 VARCHAR(36) ID 类型
  4. -- ============================================
  5. -- 6. 文本存储路径表(text_storage)
  6. -- 仅创建核心需要的表
  7. -- ============================================
  8. CREATE TABLE IF NOT EXISTS text_storage (
  9. id VARCHAR(36) PRIMARY KEY DEFAULT replace(gen_random_uuid()::text, '-', ''),
  10. document_id VARCHAR(36) NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
  11. file_path VARCHAR(500) NOT NULL,
  12. file_size BIGINT,
  13. checksum VARCHAR(64),
  14. created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  15. updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
  16. );
  17. CREATE INDEX IF NOT EXISTS idx_text_storage_document_id ON text_storage(document_id);
  18. CREATE UNIQUE INDEX IF NOT EXISTS idx_text_storage_document_unique ON text_storage(document_id);
  19. -- 创建更新时间触发器
  20. CREATE OR REPLACE FUNCTION update_text_storage_updated_at()
  21. RETURNS TRIGGER AS $$
  22. BEGIN
  23. NEW.updated_at = CURRENT_TIMESTAMP;
  24. RETURN NEW;
  25. END;
  26. $$ LANGUAGE plpgsql;
  27. DROP TRIGGER IF EXISTS update_text_storage_updated_at ON text_storage;
  28. CREATE TRIGGER update_text_storage_updated_at BEFORE UPDATE ON text_storage
  29. FOR EACH ROW EXECUTE FUNCTION update_text_storage_updated_at();
  30. -- 显示创建结果
  31. SELECT 'text_storage 表创建成功' AS result;