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