`
jjxliu306
  • 浏览: 157301 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

postgres模拟merge

阅读更多

群里这几天一直有人要做类似merge或者replace的操作,嚷嚷表字段多 用function进行insert or update写起来麻烦。OK,下面贴一个 触发器进行replace的demo 

写个触发器 插入之前执行触发器 

-- 创建一个测试表 

create table test(id int primary key , name varchar(50)); 

-- 触发器 插入前ID如果已经存在则替换name的值 
CREATE OR REPLACE function _replace() RETURNS TRIGGER AS $INSERT$ 

declare 

_has int ; 

BEGIN 


-- 判断ID 是否已经存在 
select 1 from test where id = NEW.id into _has; 

raise notice 'ddd:%' , _has; 

if _has > 0 then 
-- 存在 则更新 然后返回null 
update test set name = NEW.name where id = NEW.id; 

RETURN null; 


end if; 
-- 不存在 则返回 让执行该做的插入操作 
return NEW; 


END; 

$INSERT$ 

LANGUAGE PLPGSQL; 

-- 给表加上触发器 只针对insert 
CREATE TRIGGER tbefore BEFORE INSERT ON test FOR EACH ROW EXECUTE PROCEDURE _replace(); 

-- 插入两个值 
insert into test(id , name) values(1,'1'); 
insert into test(id , name) values(1,'6'); 

--查询 

select * from test; 

结果: 

pumpkin=> select * from test; 
id | name 
----+------ 
1 | 6 
(1 行记录) 

分享到:
评论

相关推荐

    postgres 主从

    根据题目提供的信息,“Linux下关于的postgres 主从 配置文档配置好了后,启动这台模拟宕掉的原主机,并使之与连接,并做他的备机”,主要涉及的是如何在Linux环境下配置PostgreSQL的主从架构,并在主数据库故障恢复...

    postgres数据库用户手册

    PostgreSQL,通常称为postgres,是一种强大的开源关系型数据库管理系统(RDBMS),在全球范围内被广泛应用于各种规模的应用程序。这份“postgres数据库用户手册”提供了一套详尽的指南,涵盖了从初学者到高级开发...

    postgres数据库中文手册

    《postgres数据库中文手册》是为数据库管理员、开发者和学习者提供的宝贵资源,它详细阐述了PostgreSQL数据库系统的基础知识、语言特性和编程规范。PostgreSQL,通常简称为postgres,是一种功能强大的开源关系型...

    postgres用户下ssh无密码登录

    ssh -vv postgres@node2 七、SELinux配置 在某些系统中,需要配置SELinux以允许无密码登录。可以使用以下命令禁用SELinux: SELINUX=disabled 并重启服务器: reboot 八、结论 本文详细介绍了Postgres用户下...

    Rails.Angular.Postgres.and.Bootstrap.2nd.Edition

    Create a usable and attractive login form using Bootstrap's styles, while ensuring the database table backing it is secure using Postgres' check constraints. See how creating an advanced Postgres ...

    ARM架构国产操作系统postgres

    postgres_v9.6.8 arm架构 国产操作系统 欧拉操作系统 eulerOS 免安装版本postgres,开箱即用 启动方式:./bin/pg_ctl -D data -l logfile start 默认用户名密码:postgres、ft@135246,也可重命名data目录后执行./...

    postgres-12.19官方离线镜像安装包

    postgres-12.19官方离线镜像安装包

    postgres odbc x64

    【Postgres ODBC x64】是针对Windows 64位操作系统的PostgreSQL数据库系统的一个重要组件,它允许用户通过ODBC(Open Database Connectivity)接口与PostgreSQL进行数据交互。ODBC是一种标准的API,使得应用程序能够...

    postgres_exporter-0.9.0.linux-amd64.tar.gz

    "postgres_exporter-0.9.0.linux-amd64.tar.gz" 是一个针对PostgreSQL数据库监控的工具,名为Postgres Exporter。这个压缩包是专为Linux 64位(amd64)系统设计的,版本号为0.9.0。Postgres Exporter的主要任务是...

    postgres 代码生成器

    Postgres 代码生成器是一种工具,它能够帮助开发者快速构建基于PostgreSQL数据库的应用程序。这个工具的核心功能是自动生成3层架构的代码,这通常包括数据访问层(DAL)、业务逻辑层(BLL)和表示层(UI)或前端接口...

    tomcat、JDK、postgres环境搭建

    Tomcat、JDK、Postgres 环境搭建知识点总结 一、Linux 操作系统简介 Linux 是一套免费使用和自由传播的类 Unix 操作系统,由全世界各地的成千上万的程序员设计和实现。Linux 的出现最早开始于芬兰赫尔辛基大学学生...

    postgressql连接数据库

    postgressql 连接数据库 和关闭数据库

    postgres开启DEBUG模式

    提供在Windows和Linux下如如何配置postgres的debug

    Linux下postgres安装说明

    Linux下postgres安装说明

    postgres10.3 win64

    postgres,postgis,openlayer,网页GIS开发,geoserver

    suse postgres 开机启动

    suse postgres 开机启动

    mysql2postgres.zip

    MySQL到PostgreSQL的数据迁移工具——mysql2postgres 在数据库管理领域,经常遇到需要将数据从一个数据库系统迁移到另一个的情况。比如,从MySQL迁移到PostgreSQL。这时,`mysql2postgres`工具就能派上用场。它是一...

    Postgres-XL数据库集群配置说明

    Postgres-XL是一个开源的SQL数据库集群解决方案,它构建在PostgreSQL之上,提供了横向扩展的能力。横向扩展意味着可以通过增加更多的服务器来提升数据库的处理能力,它特别适合于需要处理大规模并行数据处理任务的...

    postgres_image.tar

    postgres的docker镜像,可以使用docker load < postgres_image.tar,把此镜像文件加入到docker服务管理的磁盘中,然后使用docker run使用镜像

    Postgres-XL集群.pdf

    Postgres-XL集群是基于开源数据库PostgreSQL开发的一款分布式数据库集群系统。它支持复杂的事务处理和数据分析工作负载,并且具有水平扩展的能力。Postgres-XL集群的搭建涉及多个步骤,包括环境准备、系统配置、用户...

Global site tag (gtag.js) - Google Analytics