Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> kasowanie wszystkich danych z tabel
Apo
post 26.05.2006, 10:55:27
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


Witam
Mam kilka pytan smile.gif

1. Czy jest jakiś sposób aby wykasować wszystkie rekordy z danej tabeli, nie używając np:
  1. DELETE FROM dane WHERE id BETWEEN 0 AND 10000
? Zależy mi na szybkości.

2. Czy jest możliwośc usunięcia wszystkich danych z kilku tabel naraz w 1 zapytaniu ?

Pozdrawiam
Go to the top of the page
+Quote Post
dr_bonzo
post 26.05.2006, 11:06:54
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


TRUNCATE TABLE

http://dev.mysql.com/doc/refman/5.0/en/truncate.html

ale zauwaz roznice miedzy DELETE FROM ..


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
nospor
post 26.05.2006, 11:06:58
Post #3





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




Na oba pytania odpowiedź tu:
http://dev.mysql.com/doc/refman/5.0/en/delete.html


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Apo
post 26.05.2006, 12:14:55
Post #4





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


Dzięki za linki smile.gif

Mam jeszcze pytanie czy dobrze robie transakcje :?

  1. <?php
  2. db::query('START TRANSACTION');
  3.  if(!db::query('TRUNCATE TABLE newsy'))
  4.  db::query('ROLLBACK');
  5.  else
  6.  db::query('COMMIT');
  7. ?>


Transakcji jeszcze niegdy nie robiłem, a w manualu dają jakieś @A :? :
  1. START TRANSACTION;
  2. SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
  3. UPDATE table2 SET summary=@A WHERE type=1;
  4. COMMIT;


Byłbym wdzięczny za wytłumaczenie

Ten post edytował Apo 26.05.2006, 12:17:28
Go to the top of the page
+Quote Post
nospor
post 26.05.2006, 12:20:05
Post #5





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




skladniowo robis dobrze. logiczne - nie koniecznie. nie ma sensu robic transakcji dla jednego zapytania.

co do @A to nie ma to nic wspolnego z transakcją. Uzyli oni akurat takich zapytan z wykorzystaniem zmiennych w zapytaniu. rownie dobrze mogly tam byc zwykle zapytania


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Apo
post 26.05.2006, 12:29:55
Post #6





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


hmm no fakt głupi przykład dałem, ale np jak zrobie takie coś:

  1. <?php
  2. db::query('START TRANSACTION');
  3.  if(!db::query('TRUNCATE TABLE newsy'))
  4.  db::query('ROLLBACK');
  5.  
  6.  if(!db::query('TRUNCATE TABLE komenty'))
  7.  db::query('ROLLBACK');
  8.  
  9.  if(!db::query('TRUNCATE TABLE arty'))
  10.  db::query('ROLLBACK');
  11.  
  12.  db::query('COMMIT');
  13. ?>


No i teraz pytanie czy dobrze robie nie używając else, bo niewiem co sie stanie jeśli np jeden warunek bedzie false, wtedy wykona się ROLLBACK ale na samym końcu jest jeszcze samotne COMMIT co w takich wypadkach zrobic?

Pozdro
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: 13.06.2025 - 17:55