Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak symulować sekwencje
prond
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


Mam pytanie do MySQL'owców : czy można w jakikolwiek sposób emulować sekwencje w MySQL ?

Chciałbym móc wykonywać zapytania następującej postaci:
  1. BEGIN;
  2.  
  3. INSERT INTO master (id, created)
  4. VALUES (master_seq.NEXTVAL, SYSDATE) ;
  5.  
  6. INSERT INTO detail (master_id, title)
  7. VALUES (master_seq.currval, 'Johny') ;
  8.  
  9. INSERT INTO detail (master_id, title)
  10. VALUES (master_seq.currval, 'Tonny') ;
  11.  
  12. INSERT INTO detail (master_id, title)
  13. VALUES (master_seq.currval, 'Ronnie') ;
  14.  
  15. COMMIT;


Próbowałem wykorzystać funkcję LAST_INSERT_ID(), ale ona ma ograniczony zasięg (nie mogę przy jej użyciu pobrać bieżącej wartości sekwencji tabeli 'master' wstawiając wiersz do tabeli 'detail').

Ten post edytował prond 15.02.2007, 09:51:16
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




w mysql mamy cos takiego jak autoincrement. Nadajesz dla klucza glownego ze ma byc autoincrement i kazdy kolejny rekord, jesli nie okreslisz z palca ID, bedzie mial ID o jeden wiekszy.

last_insert_id() dziala prawidlowo, czyli zwraca id rekordu ostatnio dodanego do bazy.

Przyklad, ktory dziala:
  1. INSERT INTO x (FIELD) value ('jakas wartosc');
  2. SET @id= LAST_INSERT_ID();
  3. INSERT INTO y (ID_X, FIELD) value (@id, 'jakas wartosc');
  4. INSERT INTO y (ID_X, FIELD) value (@id, 'jakas wartosc');

Oczywiscie tabele x i y maja jeszcze pole ID, ktore jest autoincrement.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 13:05