postgresql逻辑结构--触发器(三)
触发器(tigger)是一种由事物自动触发执行的特殊存储过程,这些事件可以是对一个表进行INSERT、UPDATE、DELETE等操作。
一、创建触发器
create [ constraint ] trigger name { before | after | instead of} { event [ or....] } on table_name [from referenced_table_name]
{not deferrable | [deferrable] {intially immediate | initially deferred }}
[for [each] {row | statement}]
[when (condition)]
execute procedure function_name (arguments)
1 实例:删除学生表student的一条记录是,同事删掉score的成绩记录也删除。
1.1 创建表
postgres=# create table student(
student_no int primary key,
sutdent_name varchar(40),
age int);
CREATE TABLE postgres=# create table score(
postgres(# student_no int,
postgres(# chinese_score int,
postgres(# test_date date);
CREATE TABLE
postgres=#
1.2 创建执行函数
postgres=# create or replace function student_delete_trigger()
postgres-# returns trigger as $$
postgres$# begin
postgres$# delete from score where student_no = OLD.student_no;
postgres$# return OLD;
postgres$# end;
postgres$# $$
postgres-# language plpgsql;
CREATE FUNCTION
1.3 在创建触发器
postgres=# create trigger delete_student_trigger
postgres-# after delete on student
postgres-# for each row execute procedure student_delete_trigger();
CREATE TRIGGER
postgres=#
1.4 插入数据
postgres=# insert into score values(1,85,date '2018-05-16');
INSERT 0 1
postgres=# insert into score values(2,56,date '2018-05-16');
INSERT 0 1
postgres=# insert into score values(1,88,date '2018-05-16');
INSERT 0 1
postgres=# insert into score values(2,33,date '2018-05-16');
INSERT 0 1
postgres=# insert into score values(3,43,date '2018-05-16');
INSERT 0 1
postgres=# insert into score values(3,53,date '2018-05-16');
INSERT 0 1
1.5 删除学号为3的学生
postgres=# delete from student where student_no = 3;
DELETE 1
postgres=# select * from score;
student_no | chinese_score | test_date
------------+---------------+------------
1 | 85 | 2018-05-16
2 | 56 | 2018-05-16
1 | 88 | 2018-05-16
2 | 33 | 2018-05-16
(4 rows) postgres=#
未完待续。。。
postgresql逻辑结构--触发器(三)的更多相关文章
- postgresql逻辑结构(一)
一.数据库逻辑结构介绍 数据库:应用连接到一个数据库时,一般不能访问其它数据库,除非使用dblink等其他手段. 表.索引:postgresql中标的术语为relation,其它数据库中成为table ...
- PostgreSQL 创建触发器 Trigger
触发器的知识点: PostgreSQL在以下情况下执行/调用触发器:在尝试操作之前(在检查约束并尝试INSERT,UPDATE或DELETE之前).或者在操作完成后(在检查约束并且INSERT,UPD ...
- [转]PostgreSQL 逻辑结构 和 权限体系 介绍
摘要: 本文旨在帮助用户理解PostgreSQL的逻辑结构和权限体系,帮助用户快速的理解和管理数据库的权限. 逻辑结构 最上层是实例,实例中允许创建多个数据库,每个数据库中可以创建多个schema,每 ...
- 触发器三(行级DML触发器)(学习笔记)
行级DML触发器 每当一条记录出现更新操作时进行触发操作定义时要定义FOR EACH ROW 使用":old.字段"和":new.字段"标识符 No. 触发语句 ...
- 跟我一起读postgresql源码(三)——Rewrite(查询重写模块)
上一篇博文我们阅读了postgresql中查询分析模块的源码.查询分析模块对前台送来的命令进行词法分析.语法分析和语义分析后获得对应的查询树(Query).在获得查询树之后,程序开始对查询树进行查询重 ...
- MySql、PostgreSql、SqlServer三种数据库的造数存储过程实例
主要实例:把临时表tmp_table数据插入到目标表target_table 一.MySql造数存储过程实例 mysql造数 -- 第一步,创建临时表 CREATE TEMPORARY TABLE I ...
- 触发器-- 肖敏_入门系列_数据库进阶 60、触发器(三) --youku
二 https://v.youku.com/v_show/id_XMzkxOTc5NDY0OA==.html?spm=a2h0k.11417342.soresults.dtitle 三 https:/ ...
- postgresql 的触发器
今天编写了一个触发器 功能: 有两个表,当一个表的字段有所改动的时候,另一个表跟着改动 CREATE OR REPLACE FUNCTION process_emp_audit() RETURNS T ...
- postgresql 表触发器
1.先建一个函数,用来执行触发器启动后要执行的脚本 CREATE OR REPLACE FUNCTION "public"."trigger_day_aqi"( ...
随机推荐
- H5总结
1.新增的语义化标签: <nav>: 导航 <header>: 页眉 <footer>: 页脚 <section>:区块 <article> ...
- linux ping命令
Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”.不能打开网页时会说“你先ping网关地址192.168.1.1试试”. ...
- 《mysql必知必会》学习_第六章_20180730_欢
第六章<过滤数据> P35 1. select prod_name,prod_price from products where prod_price=2.5; 2.select prod ...
- Ajax_Json
前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxJson ...
- Vue的配置
一.build:打包的配置文件的文件夹 1.build.js 生产版本的配置文件,一般这个文件我们是不改的 'use strict' //调用检查版本的文件,check-versions的导出直接是 ...
- 数字签名、数字证书的原理以及证书的获得java版
数字签名原理简介(附数字证书) 首先要了解什么叫对称加密和非对称加密,消息摘要这些知识. 1. 非对称加密 在通信双方,如果使用非对称加密,一般遵从这样的原则:公钥加密,私钥解密.同时,一般一个密钥加 ...
- unigui验证微信服务器的有效性
UNIGUI验证微信服务器的有效性: //////////////////////////////////////////// //UniGUIServerModuleHTTPCommand //公众 ...
- 一些LinuxC的小知识点(一)
以下代码在Federo9上试验成功. 一.格式化输入16进制字符串 printf(); 输入结果: 二.测试各类型的占用的字节数 int main(int argc, char *argv[]) { ...
- node.js fs,http
error: EventEmitter定义了一个特殊的时间error,它包含了‘错误’的语义,当error被发射时,EventEmitter规定如果没有 响应的监听器,Node.js会把它当做异常,退 ...
- Linux下替代grep高效文本搜索工具
1.ack yum install ack 2.ag git clone https://github.com/ggreer/the_silver_searcher.git yum install a ...