Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zamian danych w tabeli między dwoma rekordami
fbi
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.10.2009

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


Witam,

Otóż mam tabelę kursy która zawiera pola id, id_kierowcy, trasa, data, godzina, uwagi ; (pole id_kierowcy jest UNIQUE - czyli nie możne się powtarzać ). W tabeli przykładowo są:

| ID | ID_KIEROWCY |TRASA | DATA | GODZINA | UWAGI |
---------------------------------------------------------------------
| 1 | 23 |EŁK | 23.04| 14:00 | |
---------------------------------------------------------------------
| 2 | 12 |POZNAN |12.05 | 12:30 | |
---------------------------------------------------------------------

Jak prostym zapytaniem wykonać wymianę kierowców, aby kierowca id 23 miał trasę 2 , a drugi trasę 1 , zaznaczam ze pole id_kierowcy jest UNIQUE

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Lukeup
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 5
Dołączył: 13.04.2018

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


Porada @mmmmmmm niestety nie zadziała, ze względu na UNIQUE. Możesz:
1. Transakcje (@Pyton_000) - według mnie, najlepsze rozwiązanie.
2. Zamienić jedno id_kierowcy na jakieś inne, tymczasowe, które jeszcze nie występuje w bazie, zmienić to drugie id, na to, którego oczekujesz (wtedy jest już wolne) i finalnie na podstawie tymczasowego id zamienić w drugim miejscu (i znowu będzie już wolne, przykładowo 12, bo zmieniłeś już 12 na 23). Można też utworzyć jakąś tymczasową tabelę właśnie na taką operację i przechowywać w niej tymczasowe id.
3. Usunąć UNIQUE (DROP INDEX...), w zależności od potrzeby dodać:
  1. SET SQL_SAFE_UPDATES = 0;

(wtedy nie jest wymagana kolumna-klucz), wykonać zapytanie (@mmmmmmm) i potem przywrócić UNIQUE, eg.
  1. ADD UNIQUE INDEX `id_kierowcy_UNIQUE` (`id_kierowcy` ASC);

i w zależności od potrzeb, przywrócić bezpieczne aktualizacje:
  1. SET SQL_SAFE_UPDATES = 1;
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: 30.12.2025 - 18:54