PostgreSQL 删除所有函数
运行命令:
SELECT ns.nspname || '.' || proname || '(' || oidvectortypes(proargtypes) || ')'
FROM pg_proc INNER JOIN pg_namespace AS ns ON (pg_proc.pronamespace = ns.oid)
WHERE ns.nspname = 'public' ORDER BY proname;
运行命令:
SELECT ns.nspname || '.' || proname || '(' || oidvectortypes(proargtypes) || ')'
FROM pg_proc INNER JOIN pg_namespace AS ns ON (pg_proc.pronamespace = ns.oid)
WHERE ns.nspname = 'public' ORDER BY proname;
MySQL的2个常用函数unix_timestamp()与from_unixtime PostgreSQL并不提供,但通过PostgreSQL强大的扩展性可以轻松的解决问题。
话说远在天边,尽在眼前,文档看仔细,问题迎仞解。PostgreSQL 题供extract与date_part取epoch即可
即
unix_timestamp() = round(date_part(‘epoch’,now()))
from_unixtime(int) = to_timestamp(int)
添加函数unix_timestamp()
CREATE FUNCTION unix_timestamp() RETURNS integer AS $$
SELECT (date_part(‘epoch’,now()))::integer;
$$ LANGUAGE SQL IMMUTABLE;
添加函数from_unixtime()
CREATE FUNCTION from_unixtime(int) RETURNS timestamp AS $$
SELECT to_timestamp($1)::timestamp;
$$ LANGUAGE SQL IMMUTABLE;
如数据库test拥有字段
banned boolean
使用命令
insert into test(banned) values (0)
返回为
ERROR: column “banned” is of type boolean but expression is of type integer
LINE 1: insert into test(banned) values(0)
很是不方便。用cast也没用
难到只能用规定的 TRUE,’t',’true’,'y’,'yes’,’1′吗?
但奇怪的是select 0::boolean支能显示false
使用 like 进行查询 如 explain select* from titles where title like ‘h%’ 一直显示 Seq Scan。 google+百度后,得知要设定locale为C才能使用like。
使用命令 initdb –local=C -D 集群路径 建立新的集群
目标:
当表alphas插入新行时,更新titles的alpha_at为NOW()
当表alphas删除行时,更新titles的alpha_at为NULL
1、安装plpgsql语言到数据库
createlang plpgsql DATABASE
2、建立一个返回为trigger的过程
CREATE OR REPLACE FUNCTION after_alphas_id() RETURNS trigger AS $BODY$
BEGIN
IF( TG_OP='DELETE' ) THEN
UPDATE titles SET alpha_at=null WHERE id=OLD.title_id;
ELSE
UPDATE titles SET alpha_at=NOW() WHERE id=NEW.title_id;
END IF;
RETURN NULL;
END;
$BODY$
LANGUAGE 'plpgsql';
3、创建触发器
CREATE TRIGGER after_alphas_id AFTER INSERT OR DELETE ON alphas FOR EACH ROW EXECUTE PROCEDURE after_alphas_id();
近期评论