Avatar billede bispensgipsgebis Nybegynder
13. marts 2003 - 19:45 Der er 5 kommentarer

Problemer med Trigger

Hejsa alle,

Jeg har et problem med følgende Trigger:

create trigger increment_trigger
before insert on Agent
for each row
begin
select increment_seq.nextval into :new.ID from dual;
end;

Når jeg forsøger at indsætte en ny række i tabellen får jeg en ORA-04098: trigger increment_trigger is invalid and failed re-validation.

Har ikke arbejdet med Triggers før, så jeg er ret lost. Er der en der kan give mig en hånd?

Følgende er sequencen increment_seq:
create sequence increment_seq
start with 1
increment by 1
nomaxvalue;

Formålet er at tælle mit ID-felt i tabellen Agent en op, hver gang der oprettes en ny Agent - præcis som auto_increment i MySQL eller Identity(1,1) i MS SQL. Hvis der findes en bedre løsning, er jeg lutter øren.

PFT
Rune
Avatar billede mfalck Praktikant
13. marts 2003 - 20:11 #1
du har vel et felt som hedder ID ?!?!

alternativet er at hente sequencen ud i det omgivende programmeringssprog - som regel skal man bruge værdien bagefter, og så er det rart at vide hvilket id den record har fået.
Avatar billede mfalck Praktikant
13. marts 2003 - 20:11 #2
hvilken version af oracle er det du bruger ?!?!
Avatar billede mfalck Praktikant
13. marts 2003 - 20:12 #3
jeg så lige at beskeden kan være et problem angående "authorization errors" - har du undersøgt det ?!?
Avatar billede pgroen Nybegynder
13. marts 2003 - 23:07 #4
Hmm...

Hos mig virker det da fint:



SQL> CREATE TABLE agent (id NUMBER, text VARCHAR2(100));

Table created.

SQL> CREATE SEQUENCE increment_seq;

Sequence created.

SQL> CREATE OR REPLACE TRIGGER increment_trigger
  2  BEFORE INSERT ON agent
  3  FOR EACH ROW
  4  BEGIN
  5    SELECT increment_seq.nextval INTO :new.ID FROM dual;
  6  END;
  7  /

Trigger created.

SQL> INSERT INTO agent (text) VALUES ('En tekst');

1 row created.

SQL> INSERT INTO agent (text) VALUES ('En anden tekst');

1 row created.

SQL> SELECT * FROM agent;

        ID TEXT
---------- -----------------------------------------------------
        1 En tekst
        2 En anden tekst

Har du prøvet med en

ALTER TRIGGER increment_trigger COMPILE;

Warning: Trigger altered with compilation errors.

SQL> show errors
Avatar billede bispensgipsgebis Nybegynder
14. marts 2003 - 11:44 #5
Får fejlen:
Error: Invalid cursor state. (State:24000, Native Code: 0)

Nogen idé om, hvad det betyder?

PFT
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester