[SQL系列] 从头开始学PostgreSQL Union Null 别名 触发器




-- 创建一个简单的表,包含id和name两个字段
CREATE TABLE simple_table (
    id INT PRIMARY KEY,
    name TEXT
);
 
-- 插入一些数据
INSERT INTO simple_table (id, name) VALUES (1, 'Alice'), (2, 'Bob');
 
-- 创建一个别名表,使用视图的方式来创建别名
CREATE VIEW simple_table_view AS
SELECT id, name FROM simple_table
WHERE name NOT LIKE 'A%';
 
-- 查询别名表,验证数据是否正确
SELECT * FROM simple_table_view;
 
-- 创建一个触发器,在插入或更新simple_table时,同步更新一个log表
CREATE TABLE log_table (
    id INT PRIMARY KEY,
    action TEXT
);
 
CREATE OR REPLACE FUNCTION log_table_trigger() RETURNS TRIGGER AS $$
BEGIN
    IF TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN
        INSERT INTO log_table (id, action) VALUES (NEW.id, TG_OP);
    END IF;
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;
 
DROP TRIGGER IF EXISTS log_table_trigger ON simple_table;
CREATE TRIGGER log_table_trigger
AFTER INSERT OR UPDATE ON simple_table
FOR EACH ROW EXECUTE FUNCTION log_table_trigger();
 
-- 插入或更新simple_table,验证触发器是否正常工作
INSERT INTO simple_table (id, name) VALUES (3, 'Charlie');
UPDATE simple_table SET name = 'Zed' WHERE id = 1;
 
-- 查询log表,验证触发器行为是否被记录
SELECT * FROM log_table;

这段代码首先创建了一个简单的表simple_table,并插入了一些数据。接着,使用视图(CREATE VIEW)定义了一个别名表simple_table_view。然后,通过查询这个视图验证数据是否正确。

随后,创建了一个log_table用于记录simple_table的变更,并定义了一个触发器函数log_table_trigger(),在simple_table发生插入或更新操作时,会向log_table插入记录。最后,通过插入和更新simple_table来测试触发器是否按预期工作,并通过查询log_table验证结果。

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日