This commit is contained in:
vipg
2025-11-14 17:27:56 +08:00
parent 66db58898c
commit d2673a2760

View File

@@ -3,6 +3,7 @@
DO $$
BEGIN
-- 创建主表 variety
IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'variety') THEN
CREATE TABLE variety (
id UUID DEFAULT gen_random_uuid_v7() PRIMARY KEY NOT NULL,
@@ -20,6 +21,7 @@ BEGIN
RAISE NOTICE 'variety table already exists';
END IF;
-- 创建子表 variety_name 并添加外键
IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'variety_name') THEN
CREATE TABLE variety_name (
id UUID DEFAULT gen_random_uuid_v7() PRIMARY KEY NOT NULL,
@@ -27,18 +29,25 @@ BEGIN
name VARCHAR(50) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
-- 外键约束关联variety主表
CONSTRAINT fk_variety_name_variety
FOREIGN KEY (variety_id)
REFERENCES variety(id)
ON DELETE CASCADE -- 主表记录删除时,子表关联记录也删除
ON UPDATE CASCADE -- 主表id更新时子表关联id同步更新
);
CREATE TRIGGER update_variety_name_updated_at
BEFORE UPDATE ON "variety_name"
FOR EACH ROW
EXECUTE FUNCTION update_data_modified_column();
RAISE NOTICE 'created variety_name table and trigger';
RAISE NOTICE 'created variety_name table, trigger and foreign key';
ELSE
RAISE NOTICE 'variety_name table already exists';
END IF;
-- 创建子表 variety_code 并添加外键
IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'variety_code') THEN
CREATE TABLE variety_code (
id UUID DEFAULT gen_random_uuid_v7() PRIMARY KEY NOT NULL,
@@ -46,18 +55,25 @@ BEGIN
code VARCHAR(50) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
-- 外键约束关联variety主表
CONSTRAINT fk_variety_code_variety
FOREIGN KEY (variety_id)
REFERENCES variety(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TRIGGER update_variety_code_updated_at
BEFORE UPDATE ON "variety_code"
FOR EACH ROW
EXECUTE FUNCTION update_data_modified_column();
RAISE NOTICE 'created variety_code table and trigger';
RAISE NOTICE 'created variety_code table, trigger and foreign key';
ELSE
RAISE NOTICE 'variety_code table already exists';
END IF;
-- 创建子表 variety_tick 并添加外键
IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'variety_tick') THEN
CREATE TABLE variety_tick (
id UUID DEFAULT gen_random_uuid_v7() PRIMARY KEY NOT NULL,
@@ -65,18 +81,25 @@ BEGIN
tick NUMERIC(12, 6),
deleted BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
-- 外键约束关联variety主表
CONSTRAINT fk_variety_tick_variety
FOREIGN KEY (variety_id)
REFERENCES variety(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TRIGGER update_variety_tick_updated_at
BEFORE UPDATE ON "variety_tick"
FOR EACH ROW
EXECUTE FUNCTION update_data_modified_column();
RAISE NOTICE 'created variety_tick table and trigger';
RAISE NOTICE 'created variety_tick table, trigger and foreign key';
ELSE
RAISE NOTICE 'variety_tick table already exists';
END IF;
-- 创建子表 variety_tick_price 并添加外键
IF NOT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'variety_tick_price') THEN
CREATE TABLE variety_tick_price (
id UUID DEFAULT gen_random_uuid_v7() PRIMARY KEY NOT NULL,
@@ -84,14 +107,20 @@ BEGIN
price NUMERIC(12, 6),
deleted BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
-- 外键约束关联variety主表
CONSTRAINT fk_variety_tick_price_variety
FOREIGN KEY (variety_id)
REFERENCES variety(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TRIGGER update_variety_tick_price_updated_at
BEFORE UPDATE ON "variety_tick_price"
FOR EACH ROW
EXECUTE FUNCTION update_data_modified_column();
RAISE NOTICE 'created variety_tick_price table and trigger';
RAISE NOTICE 'created variety_tick_price table, trigger and foreign key';
ELSE
RAISE NOTICE 'variety_tick_price table already exists';
END IF;