1

在我购买比 Heroku 上的共享数据库更好的东西之前,我想知道我是否能够,比如说在 postgresql 中创建自定义 CASTS?为此,我需要以具有管理员权限的用户身份登录(数据类型所有者,例如 bigint 所有者)。

4

1 回答 1

1

为了我们所有客户的安全性和稳定性,我们不会在我们的任何数据库中为您提供超级用户角色。

虽然提供的角色确实拥有您连接到的架构和数据库,但它目前不拥有类型。这就是我所说的晦涩用例,因为隐式转换的替代方案更清晰并且达到了相同的目的。

在其他情况下超级用户权限是理想的,例如运行 pg_cancel_backend 或安装扩展的能力。我们已经分别通过向后移植到 9.0 阵容(在 9.1 中默认可用)扩展白名单解决了这两种情况。

编辑 - 将文本类型与整数进行比较的示例。

对于隐式转换,可以使用some_value::new_type符号指定类型some_string::integer::

del8a7mgo0cml=> create table cast_test (number integer, string text);
CREATE TABLE
del8a7mgo0cml=> insert into cast_test VALUES (1, '1');
INSERT 0 1
del8a7mgo0cml=> insert into cast_test VALUES (2, '1');
INSERT 0 1
del8a7mgo0cml=> insert into cast_test VALUES (2, '2');
INSERT 0 1
del8a7mgo0cml=> select * from cast_test;
 number | string 
--------+--------
      1 | 1
      2 | 1
      2 | 2
(3 rows)
del8a7mgo0cml=> select * from cast_test where number = string::integer;
 number | string 
--------+--------
      1 | 1
      2 | 2
(2 rows)
于 2012-08-20T16:59:44.780 回答