[PHP]+[PostgreSQL] insert_id

0

Dla mysql'a mamy funkcję mysql_insert_id(), która zwraca nam wartość pola autoincrement w ostatnio wstawionym rekordzie. Czy jest coś podobnego dla postresql'a - wartość pola serial w ostatnio wstawionym rekordzie?

Wprawdzie mogę sobie zrobić po insercie:
SELECT max(id) FROM tabela;

Ale może jest coś gotowego?

0

Ja korzystam z takiej funkcji:

function pg_insert_id($wynik, $tabela)
	{
		$ost_id=pg_last_oid($wynik);
		$wyn=pg_fetch_array(pg_query("SELECT id FROM ".$tabela." WHERE oid=".$ost_id));
		return $wyn[0];
	}
0

w PostgreSQL istnieją tzw. sekwencje. Przyklad:

CREATE TABLE test
(
  id SERIAL not null,
  dane varchar(30),

 primary key(id)
);
INSERT INTO test(dane) VALUES('jakies dane');

teraz zamiast mysql_insert_id() wykonujesz zapytanie:

SELECT currval('test_id_seq')

pozostaje tylko zrobic fetch() i masz szukane ID. Sekwencje sa o tyle lepsze ze mozesz miec ich kilka w jednej tabeli (zobacz co sie stanie jak dasz 2x auto_increment w MySQL).

1 użytkowników online, w tym zalogowanych: 0, gości: 1