我需要编写一个函数,每次将新行插入名为users
的表中时都会触发该函数。该表有三列:name, surname, id
。每次添加新用户时,我都想自动触发CREATE USER
,其中用户名是新插入行的id。例如,如果我添加John, Smith, jsmith
行,我想要一个名为jsmith
的新用户。
如何在CREATE USER中使用NEW
,以便像在示例中一样,创建一个用户名为jsmith的用户?
答案 0 :(得分:0)
我相信你要找的是pl / pgsql EXECUTE
statement:
EXECUTE命令字符串[INTO [STRICT] target] [USING expression [,...]];
这需要一个字符串,您可以随意构建它。因此,在您的情况下,您需要使用基于插入行的变量(来自{{1})连接一段固定的SQL(单词CREATE USER
,以及您要传递以配置用户的任何选项)。记录)。
正如手册所提到的,在创建动态SQL以适当地为其上下文引用输入时,这很重要,在这种情况下,使用NEW
函数引用用户名。
所以你的触发器功能可能大致如下:
quote_ident