add
This commit is contained in:
@@ -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 $$;
|
|
||||||
20
backend/asset_assistant/sql/02_create_function.sql
Normal file
20
backend/asset_assistant/sql/02_create_function.sql
Normal file
@@ -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:相同输入返回相同输出,支持索引
|
||||||
@@ -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 $$;
|
|
||||||
@@ -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 $$;
|
|
||||||
@@ -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 $$;
|
|
||||||
Reference in New Issue
Block a user