Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> izolacja tranzakcji i sekwencja
cepa
post 29.06.2011, 22:28:03
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 7
Dołączył: 27.01.2010

Ostrzeżenie: (0%)
-----


Joł

mam pytanie bo nie jestem pewien na 100%,

przykladowo:

- rozpoczynam tranzakcje
- robie jakis tam insert
- pobieram ostatni id rekordu w tej tabeli (select * from curval('seq_id'))
- commit

czy tranzakcja zapewnia ze zwrocony id bedzie na 100% indeksem rekordu ktory wstawilem?

czy powiniuennem dodac locka na poczatku tranzakcji:
LOCK TABLE tabela IN SHARE ROW EXCLUSIVE MODE
?


--------------------
Go to the top of the page
+Quote Post
cojack
post 1.07.2011, 08:34:49
Post #2





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Nie musisz blokować tabeli, bo postgresql nie wykona dwóch operacji na raz na tej samej tabeli, wszystko leci w kolejkę.

Wystarczy że zrobisz select curval('seq_id'); o ile dobrze pamiętam. Na 100% to kiedyś wszyscy umrzemy.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
pogdan
post 15.07.2011, 08:40:22
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 21.10.2007

Ostrzeżenie: (0%)
-----


z transakcji
begin
insert into a (a ) values (1);
select currval(a_id);
commit;

i select zwróci "id" ostanio wstawiany record gdzie id tabeli a to pole pobierające wartość z seqwencji "a_id"
i to jest prawdą.


Na tomiast tutaj bez transakcji już tak być nie musi? Czy mam rację ?
insert into a (a ) values (1);
select currval(a_id);




Go to the top of the page
+Quote Post
viking
post 11.11.2011, 08:10:39
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Możesz od razu zwrócić w INSERT. Zobacz w dokumentacji RETURNING


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 02:12