对于创建行为,如果要创建的目标已存在,则会报错无法创建。对于不同的目标有不同的处理办法:
触发器(如果已存在则删除后重新创建):
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 创建表 索引 触发器 存储过程/函数时判断是否已存在及处理办法》对你有帮助,请点赞、收藏,并留下你的观点哦!