Avatar billede mort-gib Nybegynder
19. februar 2003 - 09:37 Der er 3 kommentarer og
1 løsning

Trigger problem

Jeg har en oracle server (8.1.6) på Linux (RH 6.2) som hver gang jeg genstarter maskinen laver rod i en sequence som levere primary key id til en tabel
[
create sequence order_main_seq

create or replace trigger order_main_trig
before insert on order_main
for each row
begin
select order_main_seq.nextVal
into :new.orderid
from dual;
end order_main_trig;
]
problemet er at den orderid bruges i ISO 9002 og SKAL være fortløbende, ihvertfald indtil vi får ændret ISO manualerne.
Men hvorfor sker det??
-Jeg kalder IKKE den sequence fra andre triggers, og det sker KUN hvis jeg genstarter maskinen???
Avatar billede hornuff Nybegynder
19. februar 2003 - 09:43 #1
Din sequence har en default cache på 20 - så vidt jeg husker. Dertil kommer, at du formentlig ikke lukker database ordenligt når du lukker systemet for boot??
Du kan evt. sætte cachen på sequence'n til 1, MEN du kan ikke undgå et spring, hvis transaktionen af en eller anden årsag rulles tilbage. Sekvens nummeret er i så fald under alle omstændigheder tabt.
Avatar billede mort-gib Nybegynder
19. februar 2003 - 09:50 #2
Måske har du ret, men problemet er at den springer ca 10 fremad... Jeg lukker nu ellers DB'en pænt ned og op i mine opstart scripts :-)
Avatar billede teepee Nybegynder
19. februar 2003 - 13:27 #3
hornuff HAR ret, men hans pointe om tilbagerullede transaktioner er endnu vigtigere i dit tilfælde. Hvis en transkaktion fejler eller simpelhent bare annulleres af brugeren er sequencen allerede trukket et nummer længere hen i tallene og kommer IKKE tilbage ved rollback! Som udgangspunkt er hovedreglen i Oracle; brug ALDRIG sequence til talrækker UDEN huller!!!!!
Avatar billede mort-gib Nybegynder
19. februar 2003 - 14:02 #4
-Suk, så blev jeg så meget klogere...
Tak, det vil utvivlsomt spare mig en masse tid i fremtiden. Heldigvis har management besluttet at ændre den måde man opretter en ordre på så jeg alligevel kommer til at lave nogle ændringer, så det her er ikke et stort problem.
Bare sært at jeg aldrig har set det før???
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