文档修改
This commit is contained in:
@@ -310,7 +310,10 @@ CREATE TABLE properties (
|
||||
updated_by UUID REFERENCES staff(id) ON DELETE SET NULL,
|
||||
|
||||
-- ── 全文检索向量 ──
|
||||
search_vector TSVECTOR
|
||||
search_vector TSVECTOR,
|
||||
|
||||
-- ── 乐观锁 ──
|
||||
version INTEGER NOT NULL DEFAULT 1 -- 每次 UPDATE 必须 +1;应用层检测 0 行受影响时抛 ConflictError
|
||||
);
|
||||
|
||||
-- ── 索引策略 ──
|
||||
@@ -520,7 +523,8 @@ CREATE INDEX idx_price_changes_time ON price_changes(property_id, changed_at DES
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE follow_logs (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
id UUID NOT NULL DEFAULT gen_random_uuid(),
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- 分区键,必须在最前声明
|
||||
property_id UUID NOT NULL REFERENCES properties(id) ON DELETE CASCADE,
|
||||
|
||||
log_type VARCHAR(30) NOT NULL
|
||||
@@ -554,9 +558,19 @@ CREATE TABLE follow_logs (
|
||||
-- 是否可删除(sensitive_view = FALSE,合规强制)
|
||||
is_deletable BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
deleted_at TIMESTAMPTZ -- 仅 is_deletable=TRUE 时可软删
|
||||
);
|
||||
deleted_at TIMESTAMPTZ, -- 仅 is_deletable=TRUE 时可软删
|
||||
|
||||
PRIMARY KEY (id, created_at) -- 分区表主键必须包含分区键
|
||||
) PARTITION BY RANGE (created_at);
|
||||
|
||||
-- ── 按月自动建分区(由 partition_maintenance_task Celery 任务维护)──
|
||||
-- 示例:初始建立当前月 + 下一个月的分区
|
||||
CREATE TABLE follow_logs_2026_04 PARTITION OF follow_logs
|
||||
FOR VALUES FROM ('2026-04-01') TO ('2026-05-01');
|
||||
CREATE TABLE follow_logs_2026_05 PARTITION OF follow_logs
|
||||
FOR VALUES FROM ('2026-05-01') TO ('2026-06-01');
|
||||
-- 默认分区:兜底,防止超出已建分区范围导致写入失败
|
||||
CREATE TABLE follow_logs_default PARTITION OF follow_logs DEFAULT;
|
||||
|
||||
-- 时间线展示(核心)
|
||||
CREATE INDEX idx_follow_logs_property_time ON follow_logs(property_id, created_at DESC)
|
||||
@@ -798,7 +812,8 @@ CREATE INDEX idx_survey_photos_category ON survey_photos(survey_id, category);
|
||||
-- ============================================================
|
||||
|
||||
CREATE TABLE property_photos (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
id UUID NOT NULL DEFAULT gen_random_uuid(),
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), -- 分区键
|
||||
property_id UUID NOT NULL REFERENCES properties(id) ON DELETE CASCADE,
|
||||
|
||||
category VARCHAR(20) NOT NULL
|
||||
@@ -817,10 +832,17 @@ CREATE TABLE property_photos (
|
||||
is_cover BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
sort_order SMALLINT NOT NULL DEFAULT 0,
|
||||
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
created_by UUID REFERENCES staff(id) ON DELETE SET NULL
|
||||
);
|
||||
created_by UUID REFERENCES staff(id) ON DELETE SET NULL,
|
||||
|
||||
PRIMARY KEY (id, created_at) -- 分区表主键必须包含分区键
|
||||
) PARTITION BY RANGE (created_at);
|
||||
|
||||
CREATE TABLE property_photos_2026_04 PARTITION OF property_photos
|
||||
FOR VALUES FROM ('2026-04-01') TO ('2026-05-01');
|
||||
CREATE TABLE property_photos_2026_05 PARTITION OF property_photos
|
||||
FOR VALUES FROM ('2026-05-01') TO ('2026-06-01');
|
||||
CREATE TABLE property_photos_default PARTITION OF property_photos DEFAULT;
|
||||
|
||||
CREATE INDEX idx_property_photos_property ON property_photos(property_id);
|
||||
CREATE INDEX idx_property_photos_cover ON property_photos(property_id)
|
||||
|
||||
Reference in New Issue
Block a user