是否可以一起使用 %TYPE 和数组?
CREATE FUNCTION role_update(
IN id "role".role_id % TYPE,
IN name "role".role_name % TYPE,
IN user_id_list "user".user_id % TYPE[],
IN permission_id_list INT[]
)
我遇到了语法错误,但我不想复制任何列类型,所以我想使用 "user".user_id % TYPE
而不是简单地 INT
因为这样以后修改任何列类型都更容易。
最佳答案
如手册所述here :
The type of a column is referenced by writing table_name.column_name%TYPE. Using this feature can sometimes help make a function independent of changes to the definition of a table.
可以在 RETURNS
子句中使用相同的功能。
但是没有简单的方法可以从引用的列派生数组类型,至少我不知道。
关于稍后修改任何列类型
:
您知道这种类型的语法只是从表列派生类型的语法便利吗?创建后,没有任何链接到所涉及的表或列。
它有助于保持整个创建脚本同步。但是 id 对以后对数据库中事件对象的更改没有帮助。
dba.SE 上的相关回答:
关于postgresql - PL/pgSQL - %TYPE 和 ARRAY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17659995/