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
prond
post
Post #2





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

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


Próbowałem wykonać zapytanie, które mi zasugerowałeś, ale dostaję BŁĄD :

  1. mysql> INSERT INTO master (created) VALUES (NOW());
  2. Query OK, 1 row affected (0.00 sec)
  3.  
  4. mysql> SET @myid = LAST_INSERT_ID();
  5. Query OK, 0 rows affected (0.00 sec)
  6.  
  7. mysql> SELECT @myid;
  8. +-------+
  9. | @myid |
  10. +-------+
  11. | 6 |
  12. +-------+
  13. 1 row IN SET (0.00 sec)
  14.  
  15. mysql> SELECT @myid;
  16. +-------+
  17. | @myid |
  18. +-------+
  19. | 6 |
  20. +-------+
  21. 1 row IN SET (0.00 sec)
  22.  
  23. mysql> INSERT INTO detail (master_id, title) VALUES (@myid, 'Johny');
  24. ERROR 1062 (23000): Duplicate entry '0' FOR KEY 1


W czym teraz może tkwić problem ?
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: 16.10.2025 - 02:47