Results 1 to 11 of 11

Thread: Trigger maken voor SQLite

  1. #1
    Senior Member AntonSteen's Avatar
    Join Date
    Dec 2006
    Location
    IJsselmonde (Rotterdam)
    Posts
    352

    Trigger maken voor SQLite

    Hallo mede delphi fans,

    Het volgende, ik heb een simpele database in elkaar gesleuteld wat eigenlijk geen database genoemd mag worden.
    Ik gebruik het voornamelijk dan ook om er van te leren.
    De database heeft een aantal velden, met daar in een Webid, dit webid moet worden verhoogd bij het toevoegen van gegevens, en uiteraard bij het verwijderen van gegevens.
    Ik heb alleen geen flauw idee, hoe ik dat in elkaar moet zetten, wie oh wie kan mij een heel klein beetje op de goede weg helpen.

    Ik maak gebruik van Delphi XE2 Starter, Zeos en SQLite 3.

    Alvast bedankt, ook namens moeder de vrouw ;-)
    Lazarus als hobby, en dan niet in de kroeg
    http://www.wavdsteen.com

  2. #2
    Ik weet niet precies wat een WebID is, maar kun je niets met Autonummering?
    1+1=b

  3. #3
    Senior Member Antoine's Avatar
    Join Date
    Apr 2011
    Location
    Molenwaard
    Posts
    2,399
    Uhm, Anton, kan je meer vertellen wat je wilt bereiken? Grote kans dat één van ons hier een stukje code kan laten zien..
    " De waarde van het leven is niet in geld uit te drukken "

  4. #4
    Senior Member
    Join Date
    May 2009
    Location
    End of the Road
    Posts
    893
    Mm. Als het een AutoInc is, dan hoef je niets te doen. Dan gaat het vanzelf als je een nieuwe Record toevoegd.
    Delphi is net als Apple... Ieder half jaar een nieuwe versie...

  5. #5
    Senior Member AntonSteen's Avatar
    Join Date
    Dec 2006
    Location
    IJsselmonde (Rotterdam)
    Posts
    352
    Haha, heerlijk die antwoorden bij een vraag (na zelf te hebben nagelezen), toch wel extreem onduidelijk is.
    Maar goed, WebID moet dus het ID in de database worden wat bij toevoeging van een website wordt opgehoogd, en bij verwijdering wordt verlaagd, Autonummering is inderdaad een juiste omschrijving.

    Via de link die GolezTrol gaf, kreeg ik het volgende naar voren

    CREATE TABLE test1(a INT, b TEXT);
    INSERT INTO test1(rowid, a, b) VALUES(123, 5, 'hello');
    Maar hoe verwerk ik dit binnen Delphi, moet ik dat hardcoded doen, of via de componenten van Zeos.

    Thanks
    Lazarus als hobby, en dan niet in de kroeg
    http://www.wavdsteen.com

  6. #6
    Senior Member Antoine's Avatar
    Join Date
    Apr 2011
    Location
    Molenwaard
    Posts
    2,399
    Van zeos bestaat het component. ZQuery dat zou je kunnen. gebruiken ...
    " De waarde van het leven is niet in geld uit te drukken "

  7. #7
    Senior Member AntonSteen's Avatar
    Join Date
    Dec 2006
    Location
    IJsselmonde (Rotterdam)
    Posts
    352
    Thanks, ga ik daar eens mee stoeien
    Lazarus als hobby, en dan niet in de kroeg
    http://www.wavdsteen.com

  8. #8
    Senior Member Antoine's Avatar
    Join Date
    Apr 2011
    Location
    Molenwaard
    Posts
    2,399
    Ow, tip: Je kan met deze tool natuurlijk je database maken, maar ook query's, je kan ze daar heerlijk testen en er lekker mee stoeien...
    " De waarde van het leven is niet in geld uit te drukken "

  9. #9
    Senior Member AntonSteen's Avatar
    Join Date
    Dec 2006
    Location
    IJsselmonde (Rotterdam)
    Posts
    352
    Quote Originally Posted by Antoine View Post
    Ow, tip: Je kan met deze tool natuurlijk je database maken, maar ook query's, je kan ze daar heerlijk testen en er lekker mee stoeien...
    Dank je, ik gebruikte hem al

    GolezTrol zette me met zijn link op de goede weg, wat heb ik gedaan, in tegen stelling wat Antoine zei, heb ik hem hardcoded ingebracht.

    Als eerste heb ik een variable aangemaakt, en deze variable laat ik uitvoeren bij elke toevoeging, kortom het werkt.
    Thanks.

    Code:
    Autocount := 'CREATE TRIGGER Websites ACTIVE BEFORE INSERT POSTITION 0 AS ' +
      ' IF (NEW.ID is NULL) THEN NEW.ID = WEBID(WEBID);' +
      'END)';
    Opmerkingen en/of kritiek, altijd welkom, vooral positieve
    Lazarus als hobby, en dan niet in de kroeg
    http://www.wavdsteen.com

  10. #10
    WebID moet dus het ID in de database worden wat bij toevoeging van een website wordt opgehoogd, en bij verwijdering wordt verlaagd, Autonummering is inderdaad een juiste omschrijving.
    Dat lijkt me error by design.

    Een uniek ID is de unieke identificatie van je record. Autonumber is daar prima voor te gebruiken. Het issue hier is dat je die id's wilt hergebruiken.

    Normaal leg je relaties tussen tabellen op basis van je unieke id. Je gaat dus problemen creeeren voor jezelf en risico's introduceren in je database.

    Een id (je pk) moet alleen dat zijn, een unieke identifier van je record. Dat mag verder ook geen enkeke andere functie hebben.

    Cary Jensen heeft daar een aantal mooie artikelen over geschreven die je vast nog wel online kunt vinden.

  11. #11
    Senior Member AntonSteen's Avatar
    Join Date
    Dec 2006
    Location
    IJsselmonde (Rotterdam)
    Posts
    352
    Op dit moment bij het testen nog geen problemen gevonden, maar goed, wat niet is kan nog komen.

    Het creeeren van een probleem qua ID's, het is voor mij een allereerste database applicatie, om gewoon eens te kijken wat de mogelijkheden zijn, zeg eigenlijk maar gewoon keihard lesstof.
    Het werken met meerdere tabellen komt later pas aan de orde.


    Ik kwam deze tegen can Cary Jensen, klikkerdeklik

    Wel bedankt voor de input Benno, en voor het lees voer.
    Lazarus als hobby, en dan niet in de kroeg
    http://www.wavdsteen.com

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •