SET — 更改一个运行时参数
SET [ SESSION | LOCAL ]configuration_parameter{ TO | = } {value| 'value' | DEFAULT } SET [ SESSION | LOCAL ] TIME ZONE {timezone| LOCAL | DEFAULT }
   SET命令更改运行时配置参数。很多
   Chapter 19中列出的参数可以用
   SET即时更改(但是有些需要超级用户
   特权才能更改,并且还有一些在服务器或者会话启动之后不能被更改)。
   SET只影响当前会话所使用的值。
  
   如果在一个事务内发出SET
   (或者等效的SET SESSION)而该事务后来
   中止,在该事务被回滚时SET命令的效果会
   消失。一旦所在的事务被提交,这些效果将会持续到会话结束(除非被另
   一个SET所覆盖)。
  
   SET LOCAL的效果只持续到当前事务结束,
   不管事务是否被提交。一种特殊情况是在一个事务内
   SET后面跟着
   SET LOCAL:
   SET LOCAL值将会在该事务结束前一直可见,
   但是之后(如果该事务被提交)SET值将会生效。
  
   SET或SET LOCAL
   的效果也会因为回滚到早于它们的保存点而消失。
  
   如果在一个函数内使用SET LOCAL并且该函数
   还有对同一变量的SET选项(见
   CREATE FUNCTION),在函数退出时
   SET LOCAL命令的效果会消失。也就是说,该
   函数被调用时的值会被恢复。这允许用
   SET LOCAL在函数内动态地或者重复地更改
   一个参数,同时仍然能便利地使用SET选项来保存以及恢复调用
   者的值。不过,一个常规的SET命令会覆盖它所在的任何函
   数的SET选项,除非回滚,它的效果将一直保持。
  
    在PostgreSQL 版本 8.0 到 8.2 中,
    一个SET LOCAL的效果会因为释放较早的
    保存点或者成功地从一个PL/pgSQL异常块
    中退出而被取消。这种行为已经被更改,因为它被认为不直观。
   
SESSION
      指定该命令对当前会话有效(如果SESSION和LOCAL都不出现,这就是默认值)。
     
LOCAL
      指定该命令只对当前事务有效。在COMMIT或者
      ROLLBACK之后,会话级别的设置会再次生效。
      在事务块外部发出这个参数会发出一个警告并且不会有效果。
     
configuration_parameter一个可设置运行时参数的名称。可用的参数被记录在 Chapter 19和下文中。
value
      参数的新值。根据特定的参数,值可以被指定为字符串常量、标识符、
      数字或者以上构成的逗号分隔列表。写DEFAULT
      可以指定把该参数重置成它的默认值(也就是说在当前会话中还没有
      执行SET命令时它具有的值)。
     
   除了在Chapter 19中记录的配置参数,
   还有一些参数只能用SET命令设置
   或者具有特殊的语法:
   
SCHEMASET SCHEMA '是
       value'SET search_path TO 的一个别名。
       使用这种语法只能指定一个模式。
      value
NAMESSET NAMES 是
       valueSET client_encoding TO 的一个别名。
      value
SEED
       为随机数生成器(函数random)设置
       一个内部种子。允许的值是 -1 和 1 之间的浮点数,它会被乘上
       231-1。
      
       也可以通过调用函数setseed来设置种子:
SELECT setseed(value);
TIME ZONESET TIME ZONE 是
       valueSET timezone TO 的一个别
       名。语法valueSET TIME ZONE允许用于时区指定的特
       殊语法。这里是合法值的例子:
       
'PST8PDT'加州伯克利的时区。
'Europe/Rome'意大利的时区。
-7UTC 以西 7 小时的时区(等效于 PDT)。正值则是 UTC 以东。
INTERVAL '-08:00' HOUR TO MINUTEUTC 以西 8 小时的时区(等效于 PST)。
LOCALDEFAULT
           把时区设置为你的本地时区(也就是说服务器的timezone默认值)。
          
       以数字或区间给出的时区设置在内部被翻译成 POSIX 时区语法。
       例如,在SET TIME ZONE -7之后,
       SHOW TIME ZONE将会报告
       <-07>+07。
      
有关时区的更多信息可见Section 8.5.3。
   函数set_config提供了等效的功能,见
   Section 9.26。此外,可以更新
   pg_settings
   系统视图来执行与SET等效的工作。
  
设置模式搜索路径:
SET search_path TO my_schema, public;
把日期风格设置为传统 POSTGRES的 “日在月之前”的输入习惯:
SET datestyle TO postgres, dmy;
设置时区为加州伯克利:
SET TIME ZONE 'PST8PDT';
设置时区为意大利:
SET TIME ZONE 'Europe/Rome';
   SET TIME ZONE扩展了 SQL 标准定义的语法。标准
   只允许数字的时区偏移量而
   PostgreSQL允许更灵活的时区说明。
   所有其他SET特性都是
   PostgreSQL扩展。