如果一个值是plpgsql的整数,如何检查?

ret*_*.at 5 sql database postgresql plpgsql

我在触发器中使用此功能:

CREATE OR REPLACE FUNCTION xx() RETURNS trigger AS $xx$
    BEGIN   
        INSERT INTO my_log (x, y, z) VALUES (NEW.x, NEW.y, current_setting('myvar.user'));
        RETURN NULL;
    END;
$xx$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

现在我想检查一下,如果'myvar.user'是一个有效的整数,如果没有,则执行另一个INSERT语句.

我该怎么做?

Qua*_*noi 11

SELECT  current_setting('myvar.user') ~ '^[0-9]+$'
Run Code Online (Sandbox Code Playgroud)


Tom*_*lak 5

取自archives.postgresql.org

CREATE FUNCTION isnumeric(text) RETURNS boolean AS '
SELECT $1 ~ ''^[0-9]+$''
' LANGUAGE 'sql';
Run Code Online (Sandbox Code Playgroud)