2

特定の条件が満たされた場合にのみ、挿入ステートメントを実行したいと思います。純粋な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;
4

1 に答える 1

3

値42を挿入する場合、次の例では、行がまだない場合にのみ行を挿入します。

insert into lock_table (userid) 
select 42
where not exists (select 1 from lock_table where userid = 42);
于 2012-07-13T09:51:03.127 に答える