2012-07-13 91 views
1

我想只在滿足某些條件時才運行插入語句。有沒有辦法在純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; 
+1

像這一個:http://stackoverflow.com/questions/5288283/sql-server-insert-if-not-exists-best-practice? – 2012-07-13 09:44:03

+0

純粹的sql是什麼意思? – 2012-07-13 09:44:18

+0

純SQL = ANSI標準SQL,沒有過程語言擴展。 – 2012-07-13 09:47:29

回答

3

假設你要插入值42,那麼下面將只插入一行,如果沒有一個已:

insert into lock_table (userid) 
select 42 
where not exists (select 1 from lock_table where userid = 42); 
相關問題