在我购买比Heroku上的共享数据库更好的东西之前我想知道我是否能够,让我们说在postgresql中创建自定义CASTS? 为此,我需要以具有管理员权限的用户身份登录(数据类型所有者,例如bigint所有者)。
答案 0 :(得分:1)
我们不会在任何数据库中为您提供超级用户角色,以确保我们所有客户的安全性和稳定性。
虽然提供的角色确实拥有您连接的架构和数据库,但它目前还不拥有类型。这就是我所说的一个不起眼的用例,因为隐式转换的替代方法更清晰,达到了同样的目的。
在其他情况下,超级用户权限是理想的,例如运行pg_cancel_backend或安装扩展程序的能力。我们分别通过a backport to the 9.0 lineup (available by default in 9.1)和extension whitelisting解决了这两种情况。
编辑 - 将文本类型与整数进行比较的示例。
对于隐式强制转换,可以使用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)