[oracle/sql] Autonummering als PK

Pagina: 1
Acties:
  • 106 views sinds 30-01-2008
  • Reageer

  • MIT
  • Registratie: Oktober 2001
  • Laatst online: 12-08 09:29

MIT

KerMIT

Topicstarter
Beste mensen, ik ben bezig met het maken van een NAW registratiesysteem in Jbuilder. De database die hier achter zit moet verschillende tabellen bevatten. Nu heb ik een datase met msAcces gemaakt en met deze database werkt het systeem prima, het is nu de bedoeling dat er in Oracle een exacte kopie wordt gemaakt. Ik dacht dat dit niet zo'n probleem zou zijn, maar voor zover ik nu weet is het niet mogelijk autonummering te gebruiken in Oracle. Klopt dit of kan dat wel, en zo ja, hoe dan?

bvd.

No Signature


  • Bigs
  • Registratie: Mei 2000
  • Niet online
Dan zul je toch wat meer over je autonummering moeten vertellen. Direct overzetten zal niet gaan, maar tis gewoon data.. lijkt me dat dat altijd wel over te zetten is.

  • MIT
  • Registratie: Oktober 2001
  • Laatst online: 12-08 09:29

MIT

KerMIT

Topicstarter
De tabel met NAW gegevens heeft een NAWID (deze is primary key). De facturerings tabel heeft een factuurID(primary key), bevat factuur gegevens en een NAWID. Dit wordt dus een 1:N relatie. Zo zit de verhouding met meeredere tabellen.

No Signature


  • Hu9o
  • Registratie: Mei 2001
  • Laatst online: 15:24

Hu9o

Schokkend

Hier staat hoe het moet.

helaas is de site waar naar verwezen wordt 404.... maar het kan dus wel

[ Voor 0% gewijzigd door Hu9o op 25-09-2002 19:29 . Reden: foute tag ]

>>>>>>>>>>>>>>>>>>>>>>>>>Vertel Microsoft over dit probleem <<<<<<<<<<<<<<<<<<<<<<<<<


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

In oracle moet je dat waarsch oplossen dmv een setje (update/)insert(/delete) triggers icm een sequence.

Zelf heb ik zoiets opgelost door een sequence per auto-nummering kolom te nemen en dmv een before-insert-trigger te forceren dat de nieuw geinserte waarden de nieuwe waarde van de sequence kregen.
Dmv een update-trigger forceerde ik ook nog eens dat de PK's niet gewijzigd werden trouwens, maar dat is bijzaak :)

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
MIT schreef op 25 september 2002 @ 19:21:
Ik dacht dat dit niet zo'n probleem zou zijn, maar voor zover ik nu weet is het niet mogelijk autonummering te gebruiken in Oracle. Klopt dit of kan dat wel, en zo ja, hoe dan?
Ik kan me niet voorstellen dat Oracle geen auto nummering kent. Waarschijnlijk moet je bij het importeren even de autonummering uitzetten en later weer aan. Of dat kan en hoe dat moet in Oracle, kan ik je helaas niet vertellen, maar het is in ieder geval een vrij voor de hand liggende feature.

Never underestimate the power of


  • MIT
  • Registratie: Oktober 2001
  • Laatst online: 12-08 09:29

MIT

KerMIT

Topicstarter
cameodski schreef op 25 september 2002 @ 19:29:
[...]

Ik kan me niet voorstellen dat Oracle geen auto nummering kent. Waarschijnlijk moet je bij het importeren even de autonummering uitzetten en later weer aan. Of dat kan en hoe dat moet in Oracle, kan ik je helaas niet vertellen, maar het is in ieder geval een vrij voor de hand liggende feature.
Dat idee had ik dus ook, Acces wel en het allom geprezen oracle niet, vaag! Ik was trouwens niet van plan het geheel te importeren, maar het opnieuw op te bouwen.

No Signature


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

MIT schreef op 25 september 2002 @ 19:36:
Dat idee had ik dus ook, Acces wel en het allom geprezen oracle niet, vaag! Ik was trouwens niet van plan het geheel te importeren, maar het opnieuw op te bouwen.

In Oracle kan (en moet) je dat dus zelf bouwen :)
Oa dmv sequences en triggers. Niet zo handig als je geen lastige eisen ergens aan stelt, maar wel handig kwa flexibiliteit :)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Zoals ACM het al zegt, je moet het oplossen met een sequence.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • xoror
  • Registratie: November 1999
  • Niet online
in oracle hoeft het niet perse met een trigger.

je kan ook zoiets doen

code:
1
insert into tabel (col) values (colsequence.nextval);


ik doe met pgsql altijd de "serial" kolom met default value nextval(seqnaam);
dan krijg je beetje mysql effect als je kolom weg laat. ik heb al tijdje niet meer met oracle gewerkt, maar lijkt me dat je zelfde truuk ook kan toepassen bij oracle.

Mitsubishi Warmtepomp Uitlezen / Besturen | Optimaliseren


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ja dat kan zeker, maar met een trigger is opzich netter/veiliger.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:05
Ik vraag me nu af wat er beter is :

autonummering gebruiken voor een PK, of zelf een SP schrijven die iedere keer de volgende waarde voor de PK gaat haan ophalen.

https://fgheysels.github.io/


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Hoe meer je het overlaat aan je database systeem hoe veiliger.. althans zo zou het moeten zijn :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:05
dusty schreef op 26 september 2002 @ 12:32:
Hoe meer je het overlaat aan je database systeem hoe veiliger.. althans zo zou het moeten zijn :+


Dat dacht ik ook... Alleen was er hier net een collega die niet wou dat we autonumber fields gebruiken (SQL Server).
Hij zei dat dat enkel werkt op int - fields en dat die beperkt zijn tot +/-32700. Daar stel ik me toch wel ernstige vraagtekens bij...

https://fgheysels.github.io/


  • Just_a_Gamer
  • Registratie: November 2001
  • Laatst online: 31-08 07:04
Hier wordt er stap voor stap uitgelegd hoe je een auto increment moet gaan bouwen met triggers in Oracle

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
whoami schreef op 26 september 2002 @ 12:58:
Dat dacht ik ook... Alleen was er hier net een collega die niet wou dat we autonumber fields gebruiken (SQL Server).
Hij zei dat dat enkel werkt op int - fields en dat die beperkt zijn tot +/-32700. Daar stel ik me toch wel ernstige vraagtekens bij...
Dat is inderdaad niet juist. Ik maak eigenlijk altijd gebruik van autonummering en ik ben al in de buurt van zo'n half miljard geweest. De kans is erg groot dat het maximum gelijk is aan het maximum van betreffende datatype.
Alleen int-fields? Zou zo maar kunnen, maar waarom zou je het op iets anders willen. Onder int-fields vallen dan natuurlijk wel alle datatypes die alleen maar een heel getal kunnen zijn.

Never underestimate the power of


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
Wellicht een tikje overbodig, maar hou rekening met dat de sequence aan zijn eind kan komen. Wil nog wel eens vergeten worden onder het motto van 'dat gebeurt toch pas over 3 jaar' :(

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Dash2in1 schreef op 30 september 2002 @ 22:55:
Wellicht een tikje overbodig, maar hou rekening met dat de sequence aan zijn eind kan komen. Wil nog wel eens vergeten worden onder het motto van 'dat gebeurt toch pas over 3 jaar' :(
Ben erg benieuwd hoe de verschillende RDBMS-en daarop reageren. :) Zouden ze opnieuw beginnen of er gewoonweg mee ophouden? Als je een 4- of 8-byte integer gebruikt, moet je trouwens aardig je best doen om het einde te bereiken.

Never underestimate the power of

Pagina: 1