我意识到" 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
添加到INSERT
或SELECT 1;
之后INSERT
}。但是,我更愿意尽可能保持简单。
答案 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语句在没有错误时返回受影响的记录数,如果存在阻止代码成功执行的错误,则返回负数作为错误代码。这是融入您的设计的好习惯。