Autoincrement kulcsmezők végrehajtása

Ha olyan mezőt szeretne létrehozni, amelynek értéke automatikusan növekszik egy, akkor több dolgot kell tennie:

1. Hozzon létre egy generátort a kulcsmezőhöz. A kulcsmezőnek INTEGER típusúnak, NEM NULL-nak és PRIMARY KEY-nak kell lennie. Valójában a generátort bármilyen autoincrement mezőre lehet használni, nem feltétlenül kulcsfontosságú. De leggyakrabban a generátorok használják kulcsfontosságú területeken.

2. Adja meg a 0 értéket a generátorhoz (vagy másképp, ha a tábla átkerül egy másik adatbázisból, és már tartalmaz rekordokat).

3. Hozzon létre egy BEFORE INSERT triggert, amely 1 értékkel növeli ezt az értéket.

Szóval, kezdjük el. Adatbázisunkban Tovar nevű táblázat található, amelyben az azonosító első mezőjét INTEGER NOT NULL-nak nyilvánítják. Sajnos a mezőt nem jelentették kulcsfontosságú PRIMARY KEY-nak. Módosítsa a táblázatot az elsődleges kulcs hozzáadásával a mezőazonosítóhoz:

ALTER TÁBLÁZAT TOVAR ADD PRIMARY KEY (ID);

Most tegye ezt a mezőt autoincremented:

CREATE GENERATOR GenTovar;

/ * A kezdeti érték hozzárendelése a generátorhoz * /

SET GENERATOR GenTovar TO 0;

CREATE TRIGGER TRTOVAR FOR Tovar

AKTÍV ELŐTT AZ INSERT AS

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID (Gen_Tovar, 1); ENDA

/ * A tranzakció befejezése: * / COMMIT;

Az üzemeltetők az e példa szerinti, automatikus növekedése terén érték 1. Tehát behelyezése az első felvétel az értéket 1. A következő bejegyzés lesz 2, és így tovább. Mindez a tranzakció keretében valósul meg, azaz akkor is, ha sok felhasználó módosítja a táblázatot, a generátorok értékei mindig egyediek lesznek. By the way, pontosan azért, mert a táblák változások történnek egy ügyletet, és az alkalmazás kell tanulni az értéke a területen, mielőtt a tranzakció befejeződött, akkor erősen ajánlott, hogy ahelyett, hogy egy egyszerű hozzárendelés:

NEW.ID = GEN_ID (Gen_Tovar, 1);

ezt tegye meg egy NULL-ellenőrzéssel együtt:

IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID (Gen_Tovar, 1);

Most meg tudjuk vizsgálni az autoincrement teljesítményét. Hozzon létre egy következő lekérdezést:

INSERT INTO Tovar (Nazvanie, Stoimost) VALUES ("Sugar", 10.50); INSERT INTO Tovar (Nazvanie, Stoimost) VALUES ("Croup", 8,20); SELECT * FROM Tovar;

Ha mindent helyesen csináltál, két rekord jelenik meg a táblázatban, és az azonosító mező automatikusan növekszik: 1:

Autoincrement kulcsmezők végrehajtása

Ábra. 20.4. Egy autoincrementális mező munkájának bemutatása

Kérjük, vegye figyelembe, hogy csak a Nazvanie és a Stoimost mezőket vettük be. Az azonosító mező értékeit a trigger automatikusan létrehozta. Ne felejtse el lezárni a tranzakciót a COMMIT-vel, mielőtt bezárná az Interaktív SQL ablakot.

A tárolt eljárásoktól eltérően az IBConsole segédprogram kiszolgálófájában nincsenek partíciók az aktiválók számára. Azonban láthatjuk a ravasztunkat. A ravaszt a Tovar tábla számára hozták létre. Válassza ki, kattintson a jobb egérgombbal, és válassza a Tulajdonságok parancsot a helyi menüből. Megnyílik a táblázat tulajdonságai ablak, melyben a Metaadatok lapon kell menni. Ebben az ablakban, miután leírta a táblázat létrehozását, megjelenik a TrTovar triggerünk leírása.

Előadás 21. DML-adatok módosítására vonatkozó parancsok. Scripts.

Az adatmódosítás parancsok a DML (Data Manipulation Language) nyelvre vonatkoznak, amely az SQL nyelv egyik részhalmaza. Az értékek elhelyezhetők egy táblázatban, amelyet a következő üzemeltetők módosíthatnak vagy törölhetnek:

UPDATE (Módosítás) DELETE (Törlés)

Az ügyfélalkalmazásban a táblázat Táblázatelemét használhatjuk, ahol ezeket a műveleteket módszerekkel lehet végrehajtani, de ez nem mindig lehetséges. Például beillesztünk egy új bejegyzést a Hozzáadás módszerrel olyan táblázatban, amelynek automatikus növekményes mezője automatikusan kitöltődik. Ezután megadjuk az összes értéket, kivéve az autoincrement. Ezután, ha megpróbál egy Post módszert végrehajtani, amely menteni a rekordot, akkor valószínűleg hibát kapunk. Ez annak a ténynek köszönhető, hogy a BEFORE INSERT indítás aktiválódik, miután az asztali összetevő végrehajtja a Post módszert. Mivel a kulcsmező nem NULL paraméterrel rendelkezik, az InterBase nem engedi, hogy rekordot helyezzen be egy üres mezőbe. De egy rekord beillesztése INSERT lekérdezéssel egyértelmű. Ezért az adatok szerkesztése leggyakrabban átkerül a lekérdezési összetevőre, amelynek SQL-tulajdonához hozzá van rendelve a lekérdezés. Tehát ismernie kell a módosítási parancsokat, és alkalmaznia kell őket.

Adatbázisok programozása Delphi-ban

AZ ADATBÁZISTERVESZTÉS ELMÉLETE