失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Postgre9.6 创建表 索引 触发器 存储过程/函数时判断是否已存在及处理办法

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

时间:2021-06-03 06:56:34

相关推荐

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 triggerif 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 notexists

表:

当表不存在时创建表:

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);

如果觉得《Postgre9.6 创建表 索引 触发器 存储过程/函数时判断是否已存在及处理办法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。