|
|
@@ -0,0 +1,36 @@
|
|
|
+-- 灵越智报 v2.0 补充表结构(兼容 VARCHAR(36) ID 版本)
|
|
|
+-- PostgreSQL 15+
|
|
|
+-- 兼容 init.sql 中使用的 VARCHAR(36) ID 类型
|
|
|
+
|
|
|
+-- ============================================
|
|
|
+-- 6. 文本存储路径表(text_storage)
|
|
|
+-- 仅创建核心需要的表
|
|
|
+-- ============================================
|
|
|
+CREATE TABLE IF NOT EXISTS text_storage (
|
|
|
+ id VARCHAR(36) PRIMARY KEY DEFAULT replace(gen_random_uuid()::text, '-', ''),
|
|
|
+ document_id VARCHAR(36) NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
|
|
|
+ file_path VARCHAR(500) NOT NULL,
|
|
|
+ file_size BIGINT,
|
|
|
+ checksum VARCHAR(64),
|
|
|
+ created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
+ updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
+);
|
|
|
+
|
|
|
+CREATE INDEX IF NOT EXISTS idx_text_storage_document_id ON text_storage(document_id);
|
|
|
+CREATE UNIQUE INDEX IF NOT EXISTS idx_text_storage_document_unique ON text_storage(document_id);
|
|
|
+
|
|
|
+-- 创建更新时间触发器
|
|
|
+CREATE OR REPLACE FUNCTION update_text_storage_updated_at()
|
|
|
+RETURNS TRIGGER AS $$
|
|
|
+BEGIN
|
|
|
+ NEW.updated_at = CURRENT_TIMESTAMP;
|
|
|
+ RETURN NEW;
|
|
|
+END;
|
|
|
+$$ LANGUAGE plpgsql;
|
|
|
+
|
|
|
+DROP TRIGGER IF EXISTS update_text_storage_updated_at ON text_storage;
|
|
|
+CREATE TRIGGER update_text_storage_updated_at BEFORE UPDATE ON text_storage
|
|
|
+ FOR EACH ROW EXECUTE FUNCTION update_text_storage_updated_at();
|
|
|
+
|
|
|
+-- 显示创建结果
|
|
|
+SELECT 'text_storage 表创建成功' AS result;
|