INSERT返回类型?

时间:2014-03-14 14:24:25

标签: sql postgresql sql-insert return-type sql-function

我意识到" INSERT命令返回命令标记,"但是命令标签的返回类型是什么?

即,以INSERT结尾的query language (SQL) function的返回类型应该是什么?

例如:

CREATE FUNCTION messages_new(integer, integer, text) RETURNS ??? AS $$
    INSERT INTO messages (from, to, body) VALUES ($1, $2, $3);
$$ LANGUAGE SQL;

当然,我可以将函数的返回类型指定为integer,并将RETURNING 1添加到INSERTSELECT 1;之后INSERT }。但是,我更愿意尽可能保持简单。

3 个答案:

答案 0 :(得分:3)

如果插入的值有任何意义,就像在插入之前处理它们一样,您可以返回messages类型的行:

CREATE FUNCTION messages_new(integer, integer, text) 
RETURNS messages AS $$
    INSERT INTO messages (from, to, body) VALUES ($1, $2, $3)
    returning *;
$$ LANGUAGE SQL;

并且像这样得到它

select *
from messages_new(1,1,'text');

答案 1 :(得分:2)

返回类型void有效。

CREATE FUNCTION messages_new(integer, integer, text) RETURNS void AS $$
    INSERT INTO messages (from, to, body) VALUES ($1, $2, $3);
$$ LANGUAGE SQL;

答案 2 :(得分:1)

大多数API指定DML语句在没有错误时返回受影响的记录数,如果存在阻止代码成功执行的错误,则返回负数作为错误代码。这是融入您的设计的好习惯。