Re: Help : Update and insert record based on several value in the parameter - Mailing list pgsql-general

From Pavel Stehule
Subject Re: Help : Update and insert record based on several value in the parameter
Date
Msg-id CAFj8pRC6zo-n42GDVo==oxw=DOUfuscFUMnVzS36sFAnTF0ULA@mail.gmail.com
Whole thread Raw
In response to Help : Update and insert record based on several value in the parameter  (Hengky Lie <hengkyliwandouw@gmail.com>)
List pgsql-general


út 29. 1. 2019 v 13:50 odesílatel Hengky Lie <hengkyliwandouw@gmail.com> napsal:
Hi,

I want to create a function to update my table (flag='9') and insert new record (flag='0') with the rfidnumber specified in a parameter. 

This parameter may have several value seperated by space (ie. 11 22 33 44)

For this kind of parameters, PostgreSQL has a array type - for example a int[] can be perfect for this purpose

If you still use a this format, then you can use a string_to_array function and searching in array

so your UPDATE command should to look like

UPDATE tblrfid SET flag = 9 WHERE flag = '0' and rfidnumber = ANY(string_to_array(znumber))

Regards

Pavel


CREATE OR REPLACE FUNCTION public.fcreate_rfid (
  znumber varchar
)
RETURNS boolean AS
$body$
BEGIN
--update old record which has the same rfid number and flag='0' if exists
update tblrfid set flag='9' where flag='0' and rfidnumber in (znumber);
    
    -- generate new record
insert into tblrfid(tanggal, flag, rfidnumber)
select localtimestamp, '0', regexp_split_to_table(znumber, ' ');
    
     return true;
END;
$body$
LANGUAGE 'plpgsql';

when i called this function using command :

select fcreate_rfid('11 22 33 44');

This function fail to update the old record, but success to insert the new record.

Please help me how to fixed this problem. I know the problem is the update command, but i don't know the correct it. Googling anywhere didn't find any solution.

Thank you


Virus-free. www.avg.com

pgsql-general by date:

Previous
From: Andrew Gierth
Date:
Subject: Re: Help : Update and insert record based on several value in the parameter
Next
From: Abdullah Al Maruf
Date:
Subject: pg_rewind success even though getting error 'record with incorrect prev-link'