ďťż
 
MySQL / 2 pytania ďťż
 
MySQL / 2 pytania
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

MySQL / 2 pytania



Programmer - 27-12-2005 10:18
MySQL / 2 pytania
  Hej

1. Mam dwie tabele typu innodb w ktorej sa powiazania kluczami obcymi (on
delete = cascade). Czyli kiedy usuwam rekord z nadrzednej to usuwa sie tez
automatycznie rekord w podrzednej. Robie to jednym zapytaniem (delete w
nadrzednej). Czy takie jedno zapytanie powinno byc poprzedzone rozpoczeciem
transakcji i zakonczone zatwierdzeniem lub w przypadku jakiegos bledu
rollbackiem, czy tez wystarczy ze dam samego delete'a a w przypadku jakiegos
bledu (np. przy kasowaniu rekordow z tabeli podrzednej) poprzednie operacje
sie cofna.

2. To pytanie zadawalem juz jakis czas temu ale nie dostalem konkretnej
odpowiedzi (lub tez nie specjalnie ja zrozumialem :)). Mam tabele z jakimis
artykulami w ktorej znajduje sie pole odpowiedzialne za kolejnosc. Dodaje
kolejny artykul i zwieksza sie kolejnosc (SELECT MAX(priority) + 1). Po
zwiekszeniu sie kolejnosci robi sie insert artykulu. Problem w tym ze przy
zapisie inny watek moze uzyskac ta sama kolejnosc i zapisac w bazie inny
artykul z ta sama kolejnoscia. Dlatego chce na czas zapisu arytkulu
zablokowac tabele LOCK'iem. Czy to dobry pomysl i czy taki lock powinien tez
isc w transakcji?

pozdr
p.

P.S. Moze macie jakies dobre materialy elektroniczne w ktorych moglbym
poczytac sobie o tego typu problemach?





Krzysztof Wiśniewski - 29-12-2005 14:33

 
Użytkownik "Programmer" <programmer@nospam.org> napisał w wiadomości
news:ae24e$43ae58e4$540a9c82$4729@news.chello.pl.. .
| Hej
|
| 1. Mam dwie tabele typu innodb w ktorej sa powiazania kluczami obcymi (on
| delete = cascade). Czyli kiedy usuwam rekord z nadrzednej to usuwa sie tez
| automatycznie rekord w podrzednej. Robie to jednym zapytaniem (delete w
| nadrzednej). Czy takie jedno zapytanie powinno byc poprzedzone
rozpoczeciem
| transakcji i zakonczone zatwierdzeniem lub w przypadku jakiegos bledu
| rollbackiem, czy tez wystarczy ze dam samego delete'a a w przypadku
jakiegos
| bledu (np. przy kasowaniu rekordow z tabeli podrzednej) poprzednie
operacje
| sie cofna.

Taka operacja jest wykonywana łącznie, nie jest potrzebna żadna dodatkowa
jawna deklaracja transakcji. Jeśli w tabeli podrzędnej nie ma żadnego
rekordu odpowiadającego wartości klucza, to po prostu nie wykona się w niej
żaden DELETE.

| 2. To pytanie zadawalem juz jakis czas temu ale nie dostalem konkretnej
| odpowiedzi (lub tez nie specjalnie ja zrozumialem :)). Mam tabele z
jakimis
| artykulami w ktorej znajduje sie pole odpowiedzialne za kolejnosc. Dodaje
| kolejny artykul i zwieksza sie kolejnosc (SELECT MAX(priority) + 1). Po
| zwiekszeniu sie kolejnosci robi sie insert artykulu. Problem w tym ze przy
| zapisie inny watek moze uzyskac ta sama kolejnosc i zapisac w bazie inny
| artykul z ta sama kolejnoscia. Dlatego chce na czas zapisu arytkulu
| zablokowac tabele LOCK'iem. Czy to dobry pomysl i czy taki lock powinien
tez
| isc w transakcji?

A może wystarczy pojedyncze zapytanie z podselektem?

INSERT INTO tabela
SELECT (MAX(priority)+1) AS Lp, 'cośtam'
FROM tabela

| pozdr
| p.
|
| P.S. Moze macie jakies dobre materialy elektroniczne w ktorych moglbym
| poczytac sobie o tego typu problemach?

Niestety dokumentacja na stronach mysql wydaje się najbardziej kompletnym i
kompetentnym źródłem w tej sprawie.

Pozdrawiam,
Krzysiek




Programmer - 29-12-2005 14:57

  > A może wystarczy pojedyncze zapytanie z podselektem?
>
> INSERT INTO tabela
> SELECT (MAX(priority)+1) AS Lp, 'cośtam'
> FROM tabela

A co w przypadki kiedy bede zmienial kolejnosc ... Bede chcial zamienic
kolejnosc w dwoch rekordach "obok siebie"

pzdr,
p.

P.S. Dzieki za odp. na pyt. 1. Juz tracilem nadzieje :)




Krzysztof Wiśniewski - 29-12-2005 14:58

 
Użytkownik "Programmer" <programmer@nospam.org> napisał w wiadomości
news:51bc2$43b1b1f3$540a9c82$20419@news.chello.pl. ..
|> A może wystarczy pojedyncze zapytanie z podselektem?
| >
| > INSERT INTO tabela
| > SELECT (MAX(priority)+1) AS Lp, 'cośtam'
| > FROM tabela
|
| A co w przypadki kiedy bede zmienial kolejnosc ... Bede chcial zamienic
| kolejnosc w dwoch rekordach "obok siebie"
|

W każdym z takich przypadków to użytkownik musi zadbać o właściwą kolejność.
Chyba, że potrafisz podać regułę, jak ma się policzyć numer kolejny rekordu
wyciągniętego z samego środka listy (ja takiej nie znam!). W bazach danych
nie istnieje coś takiego jak Lp, wszelkie tego typu rozwiązania to protezy.

Pozdrawiam,
Krzysiek
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • kfia-tek.keep.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com