我的语言'plpgsql'中的sql有问题。
问题是首先在customers表中添加一个新列clean_phone。然后在insert和update上使用trigger将clean_phone填充到random_string()函数。这就是我所做的。
创建新列
alter table customers
add clean_phone varchar(15);
触发
create or replace function clean_function()
returns trigger as
$$
begin
new.clean_phone = random_string();
return new;
end;
$$
language 'plpgsql';
drop trigger clean_phone on customers;
create trigger clean_phone
before update or insert
on customers
for each row
execute procedure clean_function();
最后,显示表格
select name,clean_phone from customers;
我遇到的问题是在运行所有代码并显示结果后,clean_phone列仍未显示任何内容。那么,我该如何解决这个问题呢?
答案 0 :(得分:0)
请首先使用以下方法检查random_string()函数是否存在: -
选择random_string();
如果你得到了结果,那么请告诉我,因为它在我的最后工作正常。
答案 1 :(得分:0)
使用此代码: -
创建或替换函数random_string(长度整数) 将文本返回为
$$
声明字符文本[]:=' {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H ,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,b,C,d,E,F,G ,H,I,J,K,L,M,N,O,p,q,R,S,T,U,v,W,X,Y,Z}&#39 ;;
结果文字:='';
i integer:= 0;
开始
如果长度< 0然后
提出异常'鉴于长度不能小于0';
结束如果; for in 1..length loop
结果:=结果|| chars [1 + random()*(array_length(chars,1)-1)];
结束循环;
返回结果;
端;
$$ language plpgsql;
create or replace function clean_function()
returns trigger as
$$
begin
new.clean_phone = random_string(15);
return new;
end;
$$
language 'plpgsql';