SQLite Triggere
er databasetilbakeringing funksjoner, som automatisk utføres /påberopes når en bestemt database hendelse inntreffer. Følgende er de viktigste punktene om SQLite utløser:
SQLite trigger kan spesifiseres til brann når en DELETE, INSERT eller UPDATE av en bestemt database tabell skjer eller når en UPDATE skjer på på en eller flere bestemte kolonner av en tabell.
For øyeblikket støtter SQLite bare for hver rad triggere, ikke for hvert utsagn utløser. Derfor spesifisere for hver rad er valgfritt.
Både NÅR klausulen og utløse handlinger kan få tilgang til deler av rad blir satt inn, slettet eller oppdatert ved å bruke referanser på formen NEW .column-navn Hotell og OLD.column-navn Før eller etter søkeord bestemmer når trigger handlinger vil bli utført i forhold til innsetting, endring eller fjerning av tilhørende rad. Triggers automatisk droppet når tabellen som de er tilknyttet, er droppet. I tabellen som skal endres må eksistere i samme database som tabellen eller visningen som avtrekkeren er festet og man må bruke bare tabellnavn En spesiell SQL-funksjon RAISE () kan brukes innenfor et trigger-program for å heve et unntak Den grunnleggende syntaks for å skape en trigger Her EVENT_NAME Følgende er syntaksen til å skape en trigger på en UPDATE operasjon på en eller flere bestemte kolonner i en tabell som følger:. La oss vurdere en sak hvor vi ønsker å beholde revisjons rettssak for hver post som blir satt inn i COMPANY tabell som vi skaper nylig som følger (Drop COMPANY bordet hvis du allerede har det): For å holde tilsyn rettssaken, vil vi lage en ny tabell kalt REVISJON hvor loggmeldinger vil bli satt inn når det er en oppføring i COMPANY bordet for en ny rekord: Her er ID AUDIT posten ID, og EMP_ID er ID som vil komme fra COMPANY bord og DATE vil holde tidsstempel når posten vil bli opprettet i COMPANY tabellen. Så nå la oss lage en trigger på COMPANY tabellen som følger: Nå vil vi starte selve arbeidet, la oss begynne å sette rekord i COMPANY tabell som skal resultere i å skape en revisjonsloggpost i AUDIT tabellen. Så la oss lage en post i COMPANY tabellen som følger: Dette vil opprette en rekord i COMPANY tabellen, som er som følger: Samtidig vil en registrering være lage i AUDIT tabellen. Denne posten er et resultat av en trigger, som vi har laget på INSERT operasjon på COMPANY bordet. Lignende måte kan du lage dine triggere på UPDATE og DELETE operasjoner basert på dine behov. Du kan liste ned alle triggere fra sqlite_master Over SQLite uttalelsen vil liste ned kun én oppføring som følger: Hvis du ønsker å liste ned triggere på en bestemt tabell, og deretter bruke AND klausul med tabellnavn som følger: Over SQLite uttalelsen vil også liste ned kun én oppføring som følger: Følgende er DROP-kommandoen, som kan brukes til å slippe en eksisterende trigger:
, der kolonnenavn er navnet på en kolonne av tabellen at avtrekkeren er assosiert med.
< p> Hvis en NÅR klausul er levert, SQL-setninger angitt utføres bare for rader hvor NÅR klausul er sant. Hvis ingen NÅR klausul er levert, blir SQL-setninger utført for alle radene.
ikke database.tablename
.
Syntax.
er som følger:
CREATE TRIGGER trigger_name [FØR | ETTER] EVENT_NAME ON table_nameBEGIN - Trigger logikken går her .... END;
kan være INSERT, DELETE, etter og UPDATE
database drift på nevnte tabellen table_name
. Du kan eventuelt angi for hver rad etter tabellen navn
CREATE TRIGGER trigger_name [FØR | ETTER] OPPDATERING AV kolonne PÅ table_nameBEGIN - Trigger logikken går her .... END;
Eksempel
sqlite > CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEKST NOT NULL, AGE INT NOT NULL, ADRESSE CHAR (50), LØNN REAL);
sqlite > CREATE TABLE REVISJON (EMP_ID INT NOT NULL, ENTRY_DATE TEKST NOT NULL);
sqlite > CREATE TRIGGER audit_log etter sette ON COMPANYBEGIN INSERT INTO revisjon (EMP_ID, ENTRY_DATE) VALUES (new.ID, datetime ('nå')); END;
sqlite > INSERT INTO COMPANY (ID, navn, alder, adresse, LØNN) VALUES (1, 'Paul', 32, "California", 20000.00);
ID Navn Alder ADRESSE LØNN ---------- ---------- ---------- ---------- ---- ------ en Paul 32 California 20000,0
EMP_ID ENTRY_DATE ---------- ------------------ -1 2013-04-05 06:26:00
Listing UTLØSER
tabellen som følger:
sqlite > SELECT navn FROM sqlite_masterWHERE type = 'trigger';
navn ---------- audit_log
sqlite > SELECT navn FROM sqlite_masterWHERE type = 'trigger' OG tbl_name = 'COMPANY';
navn ---------- audit_log
Slippe UTLØSER
sqlite > DROP TRIGGER trigger_name;