From 97740d0447657ce35b98d0f076ea2b8ca0a43e1b Mon Sep 17 00:00:00 2001 From: vipg Date: Tue, 25 Nov 2025 15:20:41 +0800 Subject: [PATCH] add --- backend/sql/08_trade.sql | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/backend/sql/08_trade.sql b/backend/sql/08_trade.sql index 1a7d80d..a1c541d 100644 --- a/backend/sql/08_trade.sql +++ b/backend/sql/08_trade.sql @@ -30,11 +30,11 @@ BEGIN END IF; -- remark 子表 - IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'remark') THEN + IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'trade_remark') THEN CREATE TABLE remark ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, trade_id UUID NOT NULL, - remark VARCHAR NOT NULL,, + remark VARCHAR NOT NULL, deleted BOOLEAN NOT NULL DEFAULT FALSE, created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP @@ -46,6 +46,26 @@ BEGIN ELSE RAISE NOTICE '2️⃣⏩ remark 子表已存在,跳过'; END IF; + + -- open_date 子表 + IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'trade_open_date') THEN + CREATE TABLE open_date ( + id UUID DEFAULT gen_random_uuid() PRIMARY KEY, + trade_id UUID NOT NULL, + year int NOT NULL DEFAULT 0, + month int NOT NULL DEFAULT 0, + day int NOT NULL DEFAULT 0, + deleted BOOLEAN NOT NULL DEFAULT FALSE, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP + ); + CREATE TRIGGER update_open_date_updated_at + BEFORE UPDATE ON open_date + FOR EACH ROW EXECUTE FUNCTION update_data_modified_column(); + RAISE NOTICE '3️⃣✅ open_date 子表已创建'; + ELSE + RAISE NOTICE '3️⃣⏩ open_date 子表已存在,跳过'; + END IF; END $$; -- 4️⃣ 视图 ------------------------------------ @@ -53,17 +73,22 @@ DROP VIEW IF EXISTS trade_info_view; CREATE OR REPLACE VIEW trade_info_view AS SELECT t.id AS trade_id, - r.remark AS remark + r.remark AS remark, + od.year AS open_year, + od.month AS open_month, + od.day AS open_day FROM trade t LEFT JOIN remark r ON t.id = r.trade_id AND r.deleted = FALSE +LEFT JOIN open_date od ON t.id = od.trade_id AND od.deleted = FALSE WHERE t.deleted = FALSE; -RAISE NOTICE '3️⃣✅ trade_info_view 已创建/更新'; +RAISE NOTICE '4️⃣✅ trade_info_view 已创建/更新'; -- 5️⃣ 性能索引 ------------------------------------------------ CREATE INDEX IF NOT EXISTS idx_remark_trade_id_deleted ON remark(trade_id, deleted); +CREATE INDEX IF NOT EXISTS idx_open_date_trade_id_deleted ON open_date(trade_id, deleted); -RAISE NOTICE '4️⃣✅ 全部索引已确保存在'; +RAISE NOTICE '5️⃣✅ 全部索引已确保存在'; -- 6️⃣ 完成 🎉 DO $$