HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

MS SQL adatbázis tábla identity számláló nullázása


Példaprogram letöltése

9055 bájt

Ha egy táblánál olyan oszlopot hozunk létre, melynél beállítjuk az identity tulajdonságot annak érdekében, hogy a sorok automatikusan kapjanak növekvő számozást, akkor előfordulhat olyan eset, hogy szükségessé válik e számláló értékének nullázása, vagy egy tetszőleges értékre állítása. Mellékelt példában erre keresünk megoldást.

A példaprogram futtatása előtt a mellékelt ResetIdentity.sql állományban lévő tárolt eljárást futtassa le az sql-ben, annak érdekében, hogy létrejöjjön a példához szükséges adatbázis a szükséges tartalommal.
A Form1.cs forráskód 23. sorában lévő connStr változót módosítsa annak érdekében, hogy az imént létrehozott példa adatbázis elérhetővé váljon.
A megoldáshoz a DBCC sql parancsot kell használnunk, melynek CHECKIDENT utasítása elvégzi a megadott tábla identity típusú oszlopainak ellenőrzését, hogy a sorok értékei megfelelőek-e. Ugyanez az utasítás képes arra is, hogy az adott táblához tartozó identity számlálót tetszőleges értékre állítsa. Ez utóbbihoz első paraméterként a tábla nevét, másodikként a RESEED kulcsszót kell megadnunk, mely arra utasítja az sql-t hogy a számláló értékét meg kell változtatni. Harmadik paraméterként azt a számot kell megadnunk, amely az identity számláló új értéke lesz. Figyeljünk arra, hogy ha itt például nullát adunk meg, akkor a következő sor beszúrásánál az identity típusú oszlop értéke 1 lesz.
A mellékelt példában a művelet elvégzésére létrehoztunk egy tárolt eljárást ResetIdentity néven.
CREATE PROCEDURE ResetIdentity AS
  DBCC CHECKIDENT (Table1, RESEED, 0)
GO
A példaprogramban ezek után nincs más teendőnk, mint létrehoznunk két funkciót, mely beszúr egy-két sort e táblába, valamint egy olyan funkciót, mely meghívja a fenti tárolt eljárást. Ezek felhasználásával már tesztelni tudjuk a tárolt eljárás működését.
Az első nyomógombra történő kattintáskor három új sor szúrunk be a táblába, majd a tábla teljes tartalmát megjelenítjük egy DataGrid-ben, melyhez meghívjuk az UpdateGrid nevű függvényünket.
    private void button1_Click(object sender, System.EventArgs e)
    {
      connection.Open();
      SqlCommand c = new SqlCommand("insert into Table1 (Txt) VALUES (@txtvalue)", connection);                      
      c.Parameters.Add("@txtvalue", SqlDbType.VarChar, 50);
      c.Parameters[0].Value = "a";
      c.ExecuteNonQuery();
      c.Parameters[0].Value = "b";
      c.ExecuteNonQuery();
      c.Parameters[0].Value = "c";
      c.ExecuteNonQuery();
      UpdateGrid();
      connection.Close();
    }
Második nyomógomb lenyomásakor hívjuk meg a ResetIdentity tárolt eljárásunkat, mely lenullázza az identity számlálóját. Ha ezt követően ismét az első nyomógombra kattintunk, akkor jól megfigyelhető lesz az új soroknál, hogy a tábla első oszlopában a számozás ismét az elejéről indul.
    private void button2_Click(object sender, System.EventArgs e)
    {
      connection.Open();
      SqlCommand c = new SqlCommand("ResetIdentity", connection);     
      c.CommandType = CommandType.StoredProcedure;
      c.ExecuteNonQuery();
      UpdateGrid();
      connection.Close();
    }
Az UpdateGrid függvény egy egyszerű select lekérdezést futtat a táblára, majd ennek eredményét megjeleníti a DataGrid-ben.
    private void UpdateGrid()
    {
      DataSet ds = new DataSet();
      SqlDataAdapter da = new SqlDataAdapter("select * from Table1", connection);
      da.Fill(ds);
      dataGrid1.DataSource = ds.Tables[0].DefaultView;
    }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 574. 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-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |