大数据学习
bigdata learning
Toggle navigation
大数据学习
主页
openGauss数据库
Flume
MongoDB
Hadoop
数据库实验
Kafka
Zookeeper
Hbase
Manual
Spark
Neo4j
InfluxDB
RabbitMQ
Flink
About Me
归档
标签
实验10-触发器
无
2022-10-13 23:45:04
76
0
0
bigdata
# 实验10、触发器 ## 10.1 实验目的 通过实验使学生加深对数据完整性的理解,学会理解、创建和使用触发器。 ## 10.2 实验内容 (在OpenGauss的控制台环境中,用实验9的Teacher表完成) 1. 为Teacher表建立触发器tri 1,当插入或使更新表中的数据时,保证所操作的纪录的Tage值大于0。 2. 为Teacher表建立触发器tri2,禁止删除编号为00001的CEO。 3. Teacher表中的人员的编号是唯一且不可更变的,创建触发器tri3实现更新中编号的不可改变性。 4. 演示违反tri1触发器的约束的插入操作。 5. 演示违反tri1触发器的约束的更新操作。 6. 演示违反tri2触发器的约束的插入操作。 7. 演示违反tri3触发器的约束的更新操作。 ## 10.3 实验步骤 1. 仍然使用自定义完整性实验中的Teacher表。为此表建立触发器T1,当插入或使更新表中的数据时,保证所操作的纪录的Tage值大于0。 在OpenGauss的控制台中输入如下SQL语句 ```sql CREATE OR REPLACE FUNCTION tri1_func() RETURNS TRIGGER AS $$ DECLARE BEGIN IF NEW.Tage<1 THEN RAISE NOTICE '职工年龄必须是大于0的整数! 操作失败!'; ROLLBACK; ELSE RETURN NEW; END IF; END $$ LANGUAGE PLPGSQL; CREATE TRIGGER tri1 AFTER INSERT OR UPDATE ON Teacher FOR EACH ROW EXECUTE PROCEDURE tri1_func(); ``` 2. 为Teacher表建立触发器T2,禁止删除编号为S01的CEO。 在OpenGauss的控制台中输入如下SQL语句 ```sql CREATE OR REPLACE FUNCTION tri2_func() RETURNS TRIGGER AS $$ DECLARE BEGIN IF OLD.Tno='T01' THEN RAISE NOTICE '此人是CEO! 删除操作失败!'; ROLLBACK; ELSE COMMIT; RETURN OLD; END IF; END $$ LANGUAGE PLPGSQL; CREATE TRIGGER tri2 BEFORE DELETE ON Teacher FOR EACH ROW EXECUTE PROCEDURE tri2_func(); ``` 3. Teacher表中的人员的编号是唯一且不可更变的,创建触发器T3实现更新中编号的不可改变性。 在OpenGauss的控制台中输入如下SQL语句 ```sql CREATE OR REPLACE FUNCTION tri3_func() RETURNS TRIGGER AS $$ DECLARE BEGIN RAISE NOTICE '职工编号不能修改!'; ROLLBACK; END $$ LANGUAGE PLPGSQL; CREATE TRIGGER tri3 BEFORE UPDATE OF Tno ON Teacher FOR EACH ROW EXECUTE PROCEDURE tri3_func(); ``` 4. 在OpenGauss的控制台中输入如下SQL语句 ```sql INSERT INTO Teacher VALUES('T05','李宏','F',-8,'开发部'); ``` 5. 在OpenGauss的控制台中输入如下SQL语句 ```sql UPDATE Teacher SET Tage=-7 WHERE Tno='T01'; ``` 6. 在OpenGauss的控制台中输入如下SQL语句 ```sql DELETE FROM Teacher WHERE Tname='李用'; ``` 7. 在OpenGauss的控制台中输入如下SQL语句 ```sql UPDATE Teacher SET Tno='T07' WHERE Tsex='F'; ``` ## 10.4 实验要求 1. 实验之前请细细阅读实验总体要求与说明指导书 2. 在OpenGauss的控制台环境中,完成以上实验(1)-(7)步所有SQL数据定义操作,并完成实验报告。
上一篇:
实验09-用户自定义完整性
下一篇:
实验11-存储过程
文档导航