2013-08-20 10 views
10

mogę wrócić id jako INSERT rezultacie, jakPgsql. Wracając boiska w wyniku wkładki w funkcji

INSERT INTO table(id,field) VALUES($id,$value) RETURNING id; 

ale nie mogę go zwrócić i przypisać do zmiennej w mojej funkcji

var = INSERT INTO table(id,field) VALUES($id,$value) RETURNING id; 

lub

SELECT INTO var INSERT INTO table(id,field) VALUES($id,$value) RETURNING id; 

nie działają. Jak mogę to zrobić?

Odpowiedz

20

Spróbuj tego:

INSERT INTO table(id,field) 
VALUES($id,$value) 
RETURNING id into var; 
+3

Jeśli używasz tego w 'funkcji plpgsql', musisz [zadeklarować] (http://www.postgresql.org/docs/9.4/static /plpgsql-declarations.html) najpierw zmienna. – z0r

+0

Nie działa w psql 9.6 – TangMonk

+0

@Wooden Czy na pewno? Działa dla mnie z wersji 9.6. –

4

Można również użyć:

var := (INSERT INTO table(id,field) VALUES($id,$value) RETURNING id); 

Czytelność jest oczywiście osobiste preferencje, ale lubię tej składni, ponieważ pokazuje oczywisty zadanie.

+2

jakiej wersji Postgreszu używasz. Dostaję błąd składni na wyciągu. Ja też wolę tę składnię. – nXqd

+0

@nXqd: To było 2 lata temu! Myślę, że używałem PG 9.2.x lub tak. –

+1

nie działa przy 9.6.0 – TangMonk

1

To pytanie zostało wysłane dawno temu, ale może ktoś ma ten sam problem w tym momencie. , jeśli identyfikator pola ma typ SZEREGOWY. Moje rozwiązanie jest następny:

INSERT INTO table(id,field) VALUES($id,$value) RETURNING id; 

SELECT INTO var currval('table_id_seq');