From fcc758dd32e933875c4bf04ec62ff80cac3f10fa Mon Sep 17 00:00:00 2001 From: vipg Date: Mon, 17 Nov 2025 14:59:59 +0800 Subject: [PATCH] add --- .../sql/02_create_country_table.sql | 30 --------------- .../sql/02_create_function.sql | 20 ++++++++++ .../sql/03_create_name_table.sql | 32 ---------------- .../sql/04_create_code_table.sql | 32 ---------------- .../sql/05_create_info_view.sql | 38 ------------------- 5 files changed, 20 insertions(+), 132 deletions(-) delete mode 100644 backend/asset_assistant/sql/02_create_country_table.sql create mode 100644 backend/asset_assistant/sql/02_create_function.sql delete mode 100644 backend/asset_assistant/sql/03_create_name_table.sql delete mode 100644 backend/asset_assistant/sql/04_create_code_table.sql delete mode 100644 backend/asset_assistant/sql/05_create_info_view.sql diff --git a/backend/asset_assistant/sql/02_create_country_table.sql b/backend/asset_assistant/sql/02_create_country_table.sql deleted file mode 100644 index eb5111e..0000000 --- a/backend/asset_assistant/sql/02_create_country_table.sql +++ /dev/null @@ -1,30 +0,0 @@ --- 切换到目标数据库 -\c postgres; - -CREATE OR REPLACE FUNCTION update_asset_assistant_modified_column() -RETURNS TRIGGER AS $$ -BEGIN - NEW.updated_at = CURRENT_TIMESTAMP; - RETURN NEW; -END; -$$ LANGUAGE plpgsql VOLATILE; - -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'asset_assistant') THEN - CREATE TABLE "asset_assistant" ( -- asset_assistant是关键字,用双引号包裹 - id UUID DEFAULT gen_random_uuid_v7() PRIMARY KEY NOT NULL, - 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_asset_assistant_updated_at - BEFORE UPDATE ON "asset_assistant" - FOR EACH ROW - EXECUTE FUNCTION update_asset_assistant_modified_column(); - - RAISE NOTICE 'Created asset_assistant table and trigger'; - ELSE - RAISE NOTICE 'asset_assistant table already exists'; - END IF; -END $$; \ No newline at end of file diff --git a/backend/asset_assistant/sql/02_create_function.sql b/backend/asset_assistant/sql/02_create_function.sql new file mode 100644 index 0000000..267ab90 --- /dev/null +++ b/backend/asset_assistant/sql/02_create_function.sql @@ -0,0 +1,20 @@ +CREATE OR REPLACE FUNCTION update_data_modified_column() +RETURNS TRIGGER AS $$ +BEGIN + NEW.updated_at = CURRENT_TIMESTAMP; + RETURN NEW; +END; +$$ LANGUAGE plpgsql VOLATILE; + +-- 创建自动格式化小数的函数(按需去除尾部多余0) +CREATE OR REPLACE FUNCTION format_numeric_to_original(n NUMERIC) +RETURNS TEXT AS $$ +BEGIN + -- 逻辑:如果是整数(小数部分全0),返回整数文本;否则返回去除尾部0的文本 + IF n = TRUNC(n) THEN + RETURN TRUNC(n)::TEXT; -- 整数场景:1.000000 → '1' + ELSE + RETURN TRIM(TRAILING '0' FROM TRIM(TRAILING '.' FROM n::TEXT)); -- 小数场景:1.230000 → '1.23',1.002000 → '1.002' + END IF; +END; +$$ LANGUAGE plpgsql IMMUTABLE; -- IMMUTABLE:相同输入返回相同输出,支持索引 \ No newline at end of file diff --git a/backend/asset_assistant/sql/03_create_name_table.sql b/backend/asset_assistant/sql/03_create_name_table.sql deleted file mode 100644 index 8b776fe..0000000 --- a/backend/asset_assistant/sql/03_create_name_table.sql +++ /dev/null @@ -1,32 +0,0 @@ --- 切换到目标数据库 -\c postgres; - -CREATE OR REPLACE FUNCTION update_name_modified_column() -RETURNS TRIGGER AS $$ -BEGIN - NEW.updated_at = CURRENT_TIMESTAMP; - RETURN NEW; -END; -$$ LANGUAGE plpgsql VOLATILE; - -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'name') THEN - CREATE TABLE name ( - id UUID DEFAULT gen_random_uuid_v7() PRIMARY KEY NOT NULL, - asset_assistant_id UUID NOT NULL, - name 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 - ); - CREATE TRIGGER update_name_updated_at - BEFORE UPDATE ON "name" - FOR EACH ROW - EXECUTE FUNCTION update_name_modified_column(); - - RAISE NOTICE 'Created name table and trigger'; - ELSE - RAISE NOTICE 'name table already exists'; - END IF; -END $$; \ No newline at end of file diff --git a/backend/asset_assistant/sql/04_create_code_table.sql b/backend/asset_assistant/sql/04_create_code_table.sql deleted file mode 100644 index ddd36a5..0000000 --- a/backend/asset_assistant/sql/04_create_code_table.sql +++ /dev/null @@ -1,32 +0,0 @@ --- 切换到目标数据库 -\c postgres; - -CREATE OR REPLACE FUNCTION update_code_modified_column() -RETURNS TRIGGER AS $$ -BEGIN - NEW.updated_at = CURRENT_TIMESTAMP; - RETURN NEW; -END; -$$ LANGUAGE plpgsql VOLATILE; - -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'code') THEN - CREATE TABLE code ( - id UUID DEFAULT gen_random_uuid_v7() PRIMARY KEY NOT NULL, - asset_assistant_id UUID NOT NULL, - code 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 - ); - CREATE TRIGGER update_code_updated_at - BEFORE UPDATE ON "code" - FOR EACH ROW - EXECUTE FUNCTION update_code_modified_column(); - - RAISE NOTICE 'Created code table and trigger'; - ELSE - RAISE NOTICE 'code table already exists'; - END IF; -END $$; \ No newline at end of file diff --git a/backend/asset_assistant/sql/05_create_info_view.sql b/backend/asset_assistant/sql/05_create_info_view.sql deleted file mode 100644 index 7703f9b..0000000 --- a/backend/asset_assistant/sql/05_create_info_view.sql +++ /dev/null @@ -1,38 +0,0 @@ -\c postgres; - -DO $$ -DECLARE - view_exists BOOLEAN; -BEGIN - -- 检查视图是否已存在 - SELECT EXISTS ( - SELECT 1 FROM information_schema.views - WHERE table_name = 'asset_assistant_info_view' - ) INTO view_exists; - - -- 创建或更新视图 - CREATE OR REPLACE VIEW asset_assistant_info_view AS - SELECT - u.id AS asset_assistant_id, - n.name AS name, - c.code AS code, - u.deleted AS deleted - FROM - "asset_assistant" u - JOIN - name n ON u.id = n.asset_assistant_id - JOIN - code c ON u.id = c.asset_assistant_id - WHERE - u.deleted = FALSE; - - -- 根据视图是否已存在输出不同提示 - IF view_exists THEN - RAISE NOTICE '视图 asset_assistant_info_view 已更新'; - ELSE - RAISE NOTICE '视图 asset_assistant_info_view 已创建'; - END IF; -EXCEPTION - WHEN OTHERS THEN - RAISE NOTICE '处理视图时发生错误: %', SQLERRM; -END $$;