0

我正在编写一些处理一些批量上传数据的存储过程。每个输入行都可以标记为各种应用程序错误。我总共有近 100 种不同类型的错误,以及十几种不同的文件加载程序。

在 C/C++ 中,错误代码的习惯用法是一堆#defineconst在项目范围的包含(类)文件中,然后在应用程序代码中使用符号名称。编译器检查任意拼写。Java/C# 也提供了类似的结构。如何在 中获得类似的效果plpgsql?我已经在 postgresql.conf 中设置了这些,但这是一种合理的方法吗?它显然在编译时不起作用。而且我不想将 conf 文件的写入权限授予应用程序开发人员。此外,每次应用程序更改都需要重新加载 conf,这可能是系统稳定性问题。我相信还有很多其他的缺点。

同样,我还需要简单的“用户定义”类型,其中我想修复某些应用程序数据类型的表示,例如“part_number”为 varchar(20),“currency_code”为 char (3) 等等。同样,在 C/C++ 中,人们会使用typedefstruct视情况而定。所以我尝试在 PostgreSQL 中创建一个TYPE跨表、视图、函数头的一致使用。但是对于 UDT,我遇到了一系列新问题:指定主键,以及在 CSV 输入规范中现在必须在括号中给出值。在 PostgreSQL 中处理这些目标有不同的方法吗?

我是 PostgreSQL 新手。我们在 Linux 上使用 9.2。我很想使用预处理器,但它不会与我见过的任何设计工具兼容。

4

1 回答 1

1

对于您的第一个问题,您可能会使用ENUM类型。

CREATE TYPE flag AS ENUM ('ok', 'bad', 'superbad');

这至少可以对每个船旗国的拼写进行完整性检查。

对于您的第二个问题(并且请在未来提出多个问题 - 因为它使事情保持在主题上)您可能想要查看DOMAINs

于 2013-04-04T20:03:52.073 回答