<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Funkcja z SELECT , INSERT INTO oraz UPDATE]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=426&amp;type=atom"/>
	<updated>2010-04-15T17:35:40Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=426</id>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja z SELECT , INSERT INTO oraz UPDATE]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1966#p1966"/>
			<content type="html"><![CDATA[Prostsze niż myślisz (tylko musisz przetłumaczyć na swoja tabele i sekwencję)
[code]
update test set i=currval('test_i_seq') where <jakis  warunek>
[/code]]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2010-04-15T17:35:40Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1966#p1966</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja z SELECT , INSERT INTO oraz UPDATE]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1962#p1962"/>
			<content type="html"><![CDATA[[h]Dzięki, śmiga aż miło[/h].


Teraz pojawiło się podobne pytanie, tyle ze tą druga funkcję nie jest INSERT INTO  a UPDATE:

Jak zrobić UPDATE wewnątrz funkcji gdy dany zmieniany parametr będzie się właśnie brał z SELECT currva('..._seq')?? 

Jak "skleić" UPDATE i SELECT??]]></content>
			<author>
				<name><![CDATA[dfs]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=903</uri>
			</author>
			<updated>2010-04-15T13:59:37Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1962#p1962</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Funkcja z SELECT , INSERT INTO oraz UPDATE]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1961#p1961"/>
			<content type="html"><![CDATA[Skoro ma byc w sql to moze coś w takim stylu
[code]
create or replace function dodaj(int) returns void as
$$ 
insert into test1 values(default,$1);
insert into test2 select currval('test1_i_seq'), $1;
$$
language 'sql';
[/code]

Tylko najpierw musisz znaleźć jak sie nazywa sekwencja skojarzona z wykorzystanym przez ciebie typem serial (u mnie nazywa sie test1_i_seq).
Jest to pewnie nienajlepsze rozwiązanie ale w sql pewnie więcej nie wymyślisz. W ostateczności możesz wykorzystać rule albo trigger do automatycznej aktualizacji tabeli index_studenta]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2010-04-14T12:45:24Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1961#p1961</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Funkcja z SELECT , INSERT INTO oraz UPDATE]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=1960#p1960"/>
			<content type="html"><![CDATA[Witam!

Mam zamiar jedną funkcją dodać rekordy do 2 tabel, problem w tym że w drugiej tabeli musi się znajdować autonumerowane ID (typ serial) z aktualnie dodawanej pierwszej tabeli.
[quote]

CREATE OR REPLACE FUNCTION dodaj_studenta(imie character varying, nazwisko character varying, "login" character varying, haslo character varying, numer_albumu numeric(10,0) )
  RETURNS void AS
$BODY$

INSERT INTO student
    VALUES ([b]DEFAULT[/b], $3, $4, $1, $2);   [i]//Owy DEFAULT jest typu [u]serial[/u][/i]
    
INSERT INTO index_studenta
    VALUES ([b]Tu powinna się znaleźć powyższa wartość DEFALUT[/b], $5);
    
$BODY$
  LANGUAGE 'sql' VOLATILE
  COST 100;
ALTER FUNCTION dodaj_studenta(character varying, character varying, character varying, character varying, numeric(10,0)) OWNER TO egzatester;
[/quote]

Jak to zrobić?? 

P.S. Może to tak wygląda ale owe dwie tabele z przykładu muszą być oddzielne.]]></content>
			<author>
				<name><![CDATA[dfs]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=903</uri>
			</author>
			<updated>2010-04-14T12:09:03Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=1960#p1960</id>
		</entry>
</feed>
