HyperLink


Bejelentkezés
E-mail: 
Jelszó: 






Skip Navigation Links
 

Adatbázis táblák tartalmának törlése


Példaprogram letöltése

5405 bájt

Legyen a feladat a következő: egy tetszőleges MS SQL adatbázisban lévő összes táblának töröljük az összes sorát a lehető leggyorsabban és legegyszerűbben.

A példa működéséhez szükséges a ClearTables nevű adatbázis létrehozása, melyhez a mellékelt ClearAllTables.sql-t kell lefuttatnia.
A mellékelt példa futtatása előtt az ADOConnection1 ConnectionString property-t módosítsa úgy, hogy a ClearTables adatbázis elérhetővé váljon.
Egy tábla tartalmának törléséhez a TRUNCATE TABLE sql parancsot használhatjuk. A törlés naplózás nélkül történik, így a végrehajtása gyors. Most már csak egy olyan tárolt eljárást kell készítenünk, mely képes egy adatbázis tábláin egy ciklussal végigmenni és minden egyes táblára meghívni a TRUNCATE TABLE parancsot.
Ez a tárolt eljárás a ClearAllTables nevet kapja.
create procedure ClearAllTables
as begin
Szükségünk lesz két változóra.
declare @str varchar(255)
declare @name varchar(50)
Valamint egy átmeneti táblára, melyben tároljuk az adatbázisban létező táblák neveit.
create table #tables (
  name varchar(30) 
)
Ezt az átmeneti táblát feltöltjük egy select lekérdezéssel, melyet a sysobjects rendszer táblára futtatunk oly módon, hogy az eredményben a felhasználói (user) típusú táblák megnevezései szerepeljenek.
insert into #tables select name from sysobjects (nolock) where type = 'u' 
set rowcount 1
Most már csak végig kell mennünk az átmeneti tábla összes során. Ehhez egy while ciklust használunk.
while @@error = 0 begin
Lekérdezzük a @name változóba a tábla nevét, majd rögtön töröljük is ezt a sort a táblából.
      select @name = name from #tables
      delete from #tables if @@rowcount < 1 break
Létrehozunk egy sztringet, melyben szerepel a TRUNCATE TABLE utasítás a törlendő tábla megnevezésével együtt.
      select @str = 'truncate table ' + @name 
Legvégül az exec utasítással futtatjuk az imént összeállított sql parancsot.
      exec ( @str )
end
A tárolt eljárás elkészítése után már csak használnunk kell azt. A használattal azonban legyünk körültekintőek, mert igen könnyen törölhetjük vele bármely adatbázisunk minden táblájának tartalmát.
A tárolt eljárás meghívása programból a hagyományos módon történik: egy TADOConnection komponenssel létrehozunk egy kapcsolatot az adatbázis szerverrel, majd a TADOStoredProc komponens segítségével futtatjuk a ClearAllTables tárolt eljárást.
procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOConnection1.Open;
  ADOStoredProc1.ExecProc;
  ADOConnection1.Close;
end;

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 630. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2010 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |