2012-07-13 138 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); 
相关问题