Is it possible to do something like the following with SQL, not PL/pgSQL (note if it's only possible with PL/pgSQL, then how)?
IF password = 'swordfish' THEN SELECT a, b, c FROM users; ELSE SELECT -1; -- unauthorized error code END IF;
Ideally, could I wrap the above in a function with
TRUE
being an argument?Rather, is it possible to set the command status string to -1?
我之所以这样问是因为,如果有人试图使用错误的密码获取所有用户列表,我希望查询返回一个错误代码(如-1)。这是一个具有用户账户和密码的Web应用程序。因此,这不是我想要使用数据库角色/权限来管理的内容。
SELECT
改为-1,NULL,NULL
? - ma11hew28SELECT
不会返回任何东西。提供的示例是有效的 pl/pgsql,只是什么也不做。 - pozsSELECT ... WHERE password =
,但我需要能够区分这两种情况:1.密码错误,2.表中实际上没有用户。而且,那个解决方案并不能做到这一点。 - ma11hew28id = -1
的行来初始化users
(其中id
是serial
),然后只需使用类似... WHERE CASE WHEN FALSE id = -1
的东西。但是,那似乎有点奇怪。 - ma11hew28