Postgre9.6 创建表,索引,触发器,存储过程/函数时判断是否已存在及处理办法

对于创建行为,如果要创建的目标已存在,则会报错无法创建。对于不同的目标有不同的处理办法:

触发器(如果已存在则删除后重新创建):

drop TRIGGER if exists tsut_aud_data_truncate_trigger ON tsut_aud ;

-- before:在插入和更新数据前使用function处理

create trigger tsut_aud_data_truncate_trigger before insert or update on tsut_aud for each row execute procedure tsut_aud_data_trunc_trigger();


PS:触发器语法不支持create trigger if not exists

 

函数/存储过程(如果已存在则更新):

CREATE OR REPLACE FUNCTION tsut_aud_data_trunc_trigger()
 RETURNS trigger
 LANGUAGE plpgsql
AS $function$
begin
    NEW.lchgusr = substring(NEW.lchgusr for 40);
    NEW.userid = substring(NEW.userid for 129);
    NEW.status = substring(NEW.status for 1);

  return NEW;
end;
$function$
;

ps:函数/存储过程语法不支持 create FUNCTION if not exists

 

表:

当表不存在时创建表:

create table if not exists bar_code_herml
(
  "barcodeEan" varchar(13) NOT NULL PRIMARY KEY,
  "itemId" int NOT NULL
);

当表存在时,先删除后创建表(更新表结构并删除所有数据):

drop table if exists bar_code_herml;

create table  bar_code_herml
(
  "barcodeEan" varchar(13) NOT NULL PRIMARY KEY,
  "itemId" int NOT NULL
);


 

索引:

如果不存在则创建索引:

CREATE INDEX if not exists uaemt_tsuoidh_enu ON uaemt USING btree (tsuoidh);

如果存在则删除后重新创建索引:

drop index if exists uaemt_tsuoidh_enu;
CREATE INDEX uaemt_tsuoidh_enu ON uaemt USING btree (tsuoidh);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值