Toon posts:

[SQL] Auto inc. trigger probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik maak gebruik van Interbase 6.5. Nu probeer ik voor een tabel (Humanresource) een auto increment te maken op de kolom humanresourceID (primaire sleutel).

Dus Generator gemaakt:
code:
1
CREATE GENERATOR "HUMANRESOURCEID_GEN";

En de trigger:
code:
1
2
3
4
5
6
7
SET TERM !! ;
CREATE TRIGGER SET_HR_ID FOR HUMANRESOURCES
    BEFORE INSERT POSITION 0
    AS BEGIN
        NEW.HUMANRESOURCEID = GEN_ID(HUMANRESOURCEID_GEN, 1);
    END
SET TERM ; !!

Maar als ik nu data in mijn tabel wil invoegen krijg ik de fout dat HUMANRESOURCEID niet NULL mag zijn.

Iemand een idee

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 04-09 00:34

Delphi32

Heading for the gates of Eden

Controleer de volgende dingen:
1. Is de trigger active? Kan je zien in de IBConsole. Zo niet, activeren.
2. Gebruik je een TIBTable in Delphi? Dan moet je even goed de documentatie lezen, het is mij iig nooit gelukt om een TIBTable met auto-identity te gebruiken. Dat zit als volgt.

Als je TIBTable.Insert doet, geeft TIBTable een sein aan Ib dat er geïnsert gaat worden. Ergo, IB doet een insert in de tabel, code van de generator wordt getriggerd. Dat 'weten' Delphi en de TIBTable natuurlijk niet :)
Ok, jij bewerkt je record, als je klaar bent doe je een TIBTable.Post. Nou gaat Delphi dus de in Delphi bekende waarde van null in het id-veld proberen weg te schrijven in het zojuist door jou gevulde veld in de Before Insert trigger! Gaat niet werken.

Je kan proberen er een after insert van te maken, maar updates in IB doe ik het liefst met update queries.

Verwijderd

Topicstarter
Waar kan ik zien of de trigger daadwerkelijk actief is?
Als ik de properties bekijk van de tabel en dan kies voor triggers, dan zie ik mijn trigger er gewoon bij staan. Dus dan is die toch actief?

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 04-09 00:34

Delphi32

Heading for the gates of Eden

Op vrijdag 28 juni 2002 16:40 schreef HPE het volgende:
Waar kan ik zien of de trigger daadwerkelijk actief is?
Als ik de properties bekijk van de tabel en dan kies voor triggers, dan zie ik mijn trigger er gewoon bij staan. Dus dan is die toch actief?
Lukt een insert als je vanuit IBConsole een update query typt? Als dat zo is dan is de trigger actief.
Tja, ik heb hier IBConsole niet voor mn neus dus ik kan je alleen op de omslachtige wijze van dienst zijn 8-)

Verwijderd

Topicstarter
Hij doet het inmiddels. Geen idee waar het aan lag. :(

Tja die IBconsole is niet "je dat".