`
吕不为
  • 浏览: 67780 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Postgresql8.5新版本特性

阅读更多
Postgresql8.5增加了很多新的特性和功能,非常不错.
Alpha2版本已经出来了,为了实验新的功能,于是在Freebsd8上装了上去.安装非常简单

1
源代码下载下来后,直接
./configure
make
make install
就可以装上去了.

2
然后用
dell#pw useradd pgsql
#passwd pgsql
pgsql
新增一个用户pgsql并把密码也设成pgsql

3
然后再
cd /usr/local/
chown -R pgsql pgsql
把pgsql目录的用户主属性改成pgsql用户

4然后再
cd /usr/local/pgsql/bin
./initdb -D /usr/local/pgsql/data
初始化数据库集群,创建运行环境

4.1
如果你需要从网络访问数据库,则还需要打开远程访问权限
vi ../data/postgresql.conf
把监听的端地址listen_address的值从localhost改成*号就行了.
4.2
然后
vi ../data/pg_hba.conf加上认证的机制
host  all all 192.168.1.0/24 md5
这样,你的局域网内的所有计算机都就可以访问你的这个服务器了.注意,192.168.1这个要
改成你自己的网络的,不可照搬.

5然后再
./pg_ctl start -D /usr/local/pgsql/data
启动数据库

6然后再用
./psql postgres来登录就可以了.如果需要远程访问,还要把pgsql用户修改成你自己的密码.
使用alter role命令即可.

要注意的是pgadmin3的发布版是没有办法连接8.5的,连上以后会因为系统表结构字段已改过,而
无法显示数据库信息.需要从SVN中下载最新版本才行.不喜欢用命令行的同学可以用我写的一个
数据库管理工具来进行实验.

在8.5的特性列表中,有很多的特性,这里我只说几个我觉的很有用的并且我很感兴趣的

1 SQL兼容的触发器语法:用来限定仅仅更新指定的列
CREATE TRIGGER check_update
    BEFORE UPDATE OF balance ON accounts
    FOR EACH ROW
    EXECUTE PROCEDURE check_account_update();

2 创建表时的模板选项,可以用INCLUDING或EXCLUDING选项
CREATE TABLE TEST2(LIKE TEST INCLUDING DEFAULTS);
这样,生成的TEST2表就会把TEST表的字段默认值给带过来,默认是不带的.通过指定的选项,可以控制
新建的表究竟带哪些东西到新表过来.
其中可以包含的有
DEFAULTS 默认值
COMMENTS 注释
CONSTRAINTS 约束
STORAGES 存储机制和填充因子
INDEXES 索引
ALL 所有

3 对COPY语句增加了更多的支持格式,如导出的格式,分隔符,转义的字符等很多功能.
  这个功能很好,可以对输出的文件内容结构进行更多的控制

4 修改了窗口函数的PARTITION BY和ORDER BY子句
5 修复WITH RECURSIVE语句嵌套的BUG
6 增加Unicode字符串的转义支持.

7DROP COLUMN和DROPCONSTRAINT支持 IFEXISTS支持,
  以避免在列和约束不存在的时候产生异常.此功能在重复运行脚本时比较好用.
  ALTER TABLE T6 DROP COLUMN IF EXISTS COL1;
  这个功能太有用了,即使删除不存在的,也只会有一个Notice的提示,如果前台使用
  应用程序则不会出现错误,程序会忽略这个提示,而以前就会程序出现异常.以前如果
  想不产生异常,就要先去系统表中查一下这个表是否有这个字段.然后再决定操作.

8 唯一索引可以被推迟使用,主要用在ID=ID+1的功能上.
这个功能是我最期待的功能,简直太有必要的.
CREATE TABLE T10(A INT UNIQUE DEFERRABLE INITIALLY DEFERRED,B VARCHAR(10));
INSERT INTO T10 VALUES(1,'A');
INSERT INTO T10 VALUES(2,'B');
INSERT INTO T10 VALUES(3,'C');
UPDATE T10 SET A=A+10;
可以更新成功  或者:
BEGIN;
UPDATE T10 SET A=2 WHERE B='A';
UPDATE T10 SET B=1 WHERE B='B';
COMMIT;
即交换两个唯一值,以前一直没能解决的问题,现在终于解决了.

9  增加INFORMATION_SCHEMA分类支持,兼容SQL2008标准
10 允许使用*号在CSV导出时,以导出引出所有的列
11 对二进制字段的16进制格式的的输入输出支持.

12 支持DO语句
这个功能太有用了,以前想要写一段代码执行一下,那可是麻烦了,先要创建一个函数,然后在函数中写
然后再调用函数,然后再删除函数,Sqlserver和Oracle和Sybase10年前都支持的东西,PG竟然不支持.
现在终于支持了.可以直接写代码让PG运行了.
DO
$$
BEGIN
UPDATE T10 SET A=A+1;
UPDATE T10 SET A=A+2;
END
$$;
就可以执行这段代码了.修改和执行起来非常方便.可以把语句直接保存在SQL文件,需要的时候调进来执行
而不是先建一个函数一,再执行函数,再删除函数,对环境没有一点污染.

13 允许函数参数使用AS指示符

14 允许游标使用MOVE FORWARD n,MOVE BACKWARD n
    MOVE FORWARD ALL, MOVE BACKWARD ALL
    来对游标进行移动.
   这个功能对于跳行前进这种东西很有用,可以一下子跳几行前进

15 dblink支持异步通知功能了.


0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics