PG -升级补丁中SQL语句写法

函数
CREATE OR REPLACE FUNCTION ifnotexist(sqlselect text, sqlexec text)
RETURNS integer AS
$BODY$
DECLARE
exists int;
BEGIN
EXECUTE sqlSelect INTO exists;
IF exists <= 0
THEN
EXECUTE sqlExec;
RETURN 1;
END IF;
RETURN 0;

EXCEPTION
WHEN undefined_table
THEN
return -1;
--存在查询结果,不执行语句.返回1 执行成功,返回0 已经有相同的内容存在,返回-1 操作异常(目前是指无对应的表存在)
--参数1 sqlselect 判断语句
--参数2 sqlexec 执行语句
--执行语句(一) -- 插入初始化数据
--select ifnotexists('select count(*) from t_mm_wei where fa = ''1''','update t_mm_wei set fb = ''........00178645'' where fa = ''1''');
--执行语句(二)-- 创建表
--select ifnotexists('select count(*) from pg_class where relname = ''t_mm_create''',
--'CREATE TABLE t_mm_create(fa integer NOT NULL,fb text,CONSTRAINT t_mm_create_pkey PRIMARY KEY (fa))
--WITH (OIDS=FALSE
--);ALTER TABLE t_mm_create OWNER TO postgres;'
--);
--执行语句(三) -- 增加字段
--select ifnotexists('select count(*) from pg_attribute t0 inner join pg_class t1 on t0.attrelid = t1.oid where t1.relname = ''t_mm_create'' and t0.attname = ''fid''',
--'alter table t_mm_create add fid Integer;');
--执行语句(四) -- 创建索引
--select ifnotexist('select count(*) from pg_stat_user_indexes where indexrelname = ''prefix_storage_btree_index''',
--'CREATE INDEX prefix_storage_btree_index ON portal_deliveryurlprefix USING btree (storagespaceid, storagespacename);');

--判断字段是否存在
--select * from pg_attribute t0 inner join pg_class t1 on t0.attrelid = t1.oid where t1.relname = 't_mm_wei' and t0.attname = 'fa'
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION ifnotexist(text, text) OWNER TO postgres;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值