[InterBase]Trigger

Pagina: 1
Acties:

  • PleXtor
  • Registratie: Maart 2000
  • Laatst online: 12-04-2025
Nu wil ik een trigger aanmaken met de volgende code:

code:
1
2
3
4
5
6
CREATE TRIGGER SET_PERS_NR FOR PERSOON
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 new.pers_nr = gen_id(pers_nr_gen,1);
END


En dan zeurt hij de hele tijd:
Dynamic SQL Error
SQL error code = -104
Unexpected end of command
Statement: CREATE TRIGGER SET_PERS_NR FOR PERSOON
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
new.pers_nr = gen_id(pers_nr_gen,1)

Hij ziet de end niet, maar als ik de ; weg haal na 1) dan zegt ie weer dat hij END niet kent? :? Wie weet de oplossing?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Achter END moet ook een ; toch?
Moest je trouwens niet := gebruiken ipv =?

[ Voor 42% gewijzigd door ACM op 28-01-2003 19:14 ]


  • PleXtor
  • Registratie: Maart 2000
  • Laatst online: 12-04-2025
Werkt allebei niet....

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

die ; moet aan het eind volgens mij
dat andere weet ik ook ff niet

Doet iets met Cloud (MS/IBM)


  • PleXtor
  • Registratie: Maart 2000
  • Laatst online: 12-04-2025
code:
1
2
3
4
5
6
CREATE TRIGGER SET_PERS_NR FOR PERSOON
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  new.pers_nr = gen_id(pers_nr_gen,1)
END;


Dan krijg ik de foutmelding:
Dynamic SQL Error
SQL error code = -104
Token unknown - line 6, char -1
END
Statement: CREATE TRIGGER SET_PERS_NR FOR PERSOON
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
new.pers_nr = gen_id(pers_nr_gen,1)
END

En lijn 6 is END

  • PleXtor
  • Registratie: Maart 2000
  • Laatst online: 12-04-2025
Hmm toevallig heb ik het voor elkaar:
code:
1
2
3
4
5
CREATE TRIGGER SET_PERS_NR FOR PERSOON
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  new.pers_nr = gen_id(pers_nr_gen,1);; END


2 x ; achter de pers_nr_gen...

Verwijderd

Er is iets geks met Triggers waardoor je de normale end-of-block karakter ; niet kunt gebruiken. Je moet dan eerst een andere end-of-block karakter definieren, bijv ^. De hele trigger wordt dan een block, en je kunt binnenin de trigger weer ; gebruiken om commando regels af te sluiten


code:
1
2
3
4
5
6
7
8
9
10
11
SET TERM ^ ;

CREATE TRIGGER SET_PERS_NR FOR PERSOON
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 new.pers_nr = gen_id(pers_nr_gen,1);
END ^


SET TERM ;^

En dan na afloop weer de end-of-block karakter terugzetten naar ;

Verwijderd

Ik werk nooit met interbase maar in mssql mag je gaan ; gebruiken en sluit je af met RETURN ipv een begin / end blok.

code:
1
2
3
4
5
CREATE TRIGGER SET_PERS_NR FOR PERSOON
ACTIVE BEFORE INSERT POSITION 0
AS
 SET  new.pers_nr = gen_id(pers_nr_gen,1)
RETURN
Pagina: 1