仅当满足某个条件时才执行插入语句

Har*_*wig 3 sql postgresql

我想仅在满足特定条件时运行插入语句。有没有办法用纯sql来做到这一点?

我想在 pl/pgsql 中做的一个例子:

CREATE OR REPLACE FUNCTION set_search_lock (
    userid     IN   integer,
)
    RETURNS boolean AS $body$


DECLARE
BEGIN

    PERFORM 'A' FROM LOCK_TABLE WHERE USERID = userid LIMIT 1;

    IF NOT FOUND THEN
        INSERT INTO LOCK_TABLE (USERID) VALUES (userid);
        RETURN true;
    ELSE
        RETURN false;
    END IF;


END;
$body$
LANGUAGE PLPGSQL;
Run Code Online (Sandbox Code Playgroud)

小智 5

假设您要插入值 42,则以下命令将仅插入一行(如果还没有行):

insert into lock_table (userid) 
select 42
where not exists (select 1 from lock_table where userid = 42);
Run Code Online (Sandbox Code Playgroud)