PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# CREATE CONVERSION

## 名称

CREATE CONVERSION -- 定义一个新的编码转换

## 大纲

    CREATE [ DEFAULT ] CONVERSION name
        FOR source_encoding TO dest_encoding FROM function_name

## 描述

`CREATE CONVERSION`定义字符集之间的转换。 标记为`DEFAULT`的转换可以用于在前端和后端之间的自动编码转换。 出于这个原因，一般的转换如从编码 A 到 B和从编码B到A，必须定义两种转换。

为了可以创建转换，你必须有函数的`EXECUTE`权限并且在目标模式上有`CREATE`权限。

## 参数

`DEFAULT`

  `DEFAULT`选项表示这种转换是从这种源编码到目标编码的缺省转换。 同一个模式里每一对编码应该只有一个缺省编码转换。

`name`

  转换的名字。转换名可以用模式修饰。如果没有，那么转换就在当前模式中定义。 转换名在一个模式里必须唯一。

`source_encoding`

  源编码名。

`dest_encoding`

  目标编码名 。

`function_name`

  用于执行转换的函数。这个函数名可以用模式名修饰。如果没有，那么将从路径中找出这个函数。

  此函数必须有如下的样子：

      conv_proc(
          integer,  -- source encoding ID
          integer,  -- destination encoding ID
          cstring,  -- source string (null terminated C string)
          internal, -- destination (fill with a null terminated C string)
          integer   -- source string length
      ) RETURNS void;

## 注意

用`DROP CONVERSION`删除用户定义的转换。

创建转换所需要的权限可能在未来的版本中改变。

## 例子

用`myfunc`创建一个从`UTF8`编码到`LATIN1`编码的转换：

    CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;

## 兼容性

`CREATE CONVERSION`是PostgreSQL的扩展。 在SQL标准里没有`CREATE CONVERSION`语句。 但有一个在语法和意义上都很相似的`CREATE TRANSLATION`语句。

## 参见

ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSION

上一页 | 起始页 | 下一页
CREATE COLLATION | 上一级 | CREATE DATABASE