我想在db中做的是MYFUNC()
然后我想以
的形式向db发送查询select * from foo where col = 'my name'
让数据库处理它:
select * from foo where MYFUNC(col) = MYFUNC('my name')
所以我想让我的db函数隐藏给开发人员。我希望它们根据匹配的算法进行匹配,但是当新手看到它时,他们会说,'哦,我只是将名称与名称相匹配并完成它!'
有没有办法隐藏这个功能,所以开发人员不需要记得每次都使用该功能?
顺便说一下,这是在PostgresSQL 9.2中。
答案 0 :(得分:1)
您可以将其封装在纯SQL函数中:
CREATE OR REPLACE FUNCTION f_get_foo(text)
RETURNS SETOF foo AS
$func$
SELECT * FROM foo WHERE myfunc(col) = myfunc($1)
$func$
LANGUAGE sql;
然后呼叫将是:
SELECT * FROM f_get_foo('my name');
触发器不直接适用于此。
您可以在表格或视图上使用rules来弯曲。但我不打算采取这种可疑的做法。