database-note-7

Triggers

触发器,处理数据约束条件。

条件

某个操作的执行前或者执行后进行更新。

定义

  • 插入后触发
1
2
3
4
5
6
7
8
create trigger time_slot_check1 after insert on `section`
referencing new row as nrow
for each row
when (nrow.time_slot_id not in (
select time_slot_id time_slot)) # 条件
begin # 动作
rollback
end

新行代表刚插入数据库的元组。

  • 删除后触发
1
2
3
4
5
6
7
8
create trigger timeslot_check2 after delete on timeslot 
referencing old row as orow
for each row
when (orow.time_slot_id not in (select time_slot_id from time_slot))
and orow.time_slot_id in (select time_slot_id from section)
begin
rollback
end

类似RESTRCUCT级联限制。

  • 更新前出发
1
2
3
4
5
6
7
create trigger setnull_trigger before update of takes
referencing new row as nrow
for each row
when (nrow='')
begin
set nrow.grade=null;
end

对于此sql,可以在表takes之后使用on lt;field name>来指定在哪个字段进行更新时进行触发。

Recursion SQL

高级聚合函数

Ranking

1
select ID, rank() over (order by GPA desc) as s_rank from student_grades;

可用count()模拟实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值