Toon posts:

[mysql] ophogen van een Id

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heb een database met onderstaande layout

Recordnr, integer, auto_increment
Id, integer

en een heleboel andere niet interessante kolommen

De bovenstaande layout kan niet gewijzigd worden. Hier is trouwens voor gekozen omdat het mogelijk moet kunnen zijn om een id vaker terug te laten komen.

Als ik een nieuw item wil toevoegen moet ik eerste het nieuwe id bepalen, wat opzich op deze manier kan:

hoogste id opvragen dmv : select max(id) from table
id ophogen
nieuwe data inserten dmv : insert into table (id, bla) values ('$newid', '$bla')

Maar ik denk dat het sneller zou moeten kunnen, iets in de trant van:

insert into table (id, bla) values (max(id)+1, '$bla')

Maar alle geprobeerde combinatis en permutatites leveren diverse foutmeldingen op. Kan dit inderdaad niet?

[ Voor 0% gewijzigd door Verwijderd op 09-09-2002 11:19 . Reden: typo ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Auto-increment? Zoek daar eens op in uw manual van MySQL.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 09 september 2002 @ 11:20:
Auto-increment? Zoek daar eens op in uw manual van MySQL.
Daar heb ik niets aaan aangezien er maar 1 kolom auto-increment mag zijn, en dat is RecordNr al.

Verwijderd

Auto-increment hoogt de ID voor je op.. die hoef je dus niet te zetten

  • NaliXL
  • Registratie: Maart 2002
  • Laatst online: 30-07 19:19
Verwijderd schreef op 09 september 2002 @ 11:19:
Recordnr, integer, auto_increment
Id, integer
Auto-increment? Zoek daar eens op in uw manual van MySQL.
Heeft 'ie gedaan dus.
edit:
domme opmerking verwijderd

Genoeg is meer dan veel, en tart den overvloed


  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 20:10

HenkS

Da_king alias HenkS

dan klopt je ontwerp denk ik toch niet..... aangezien record nummer al uniek is, waarom moet die andere dan nog met 1 omhoog?


en ja anders als het echt niet anders kan... gewoon of:

select id ...

en dan id+1 en dan weer inserten

of dmv update update table set id=(id+1)

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Probeer ipv INSERT ... VALUES () eens INSERT ... SELECT ...

Never underestimate the power of


Verwijderd

Topicstarter
HenkS schreef op 09 september 2002 @ 11:28:
dan klopt je ontwerp denk ik toch niet..... aangezien record nummer al uniek is, waarom moet die andere dan nog met 1 omhoog?
Dat ligt er maar aan wat je wilt bereiken.

Ik wil dat er nooit data verloren kan gaan. Stel dat dit een adressenbestand is, dan wil ik over een jaar ook nog weten waar jij voor je verhuizing woonde. Het id is dan bijvoorbeeld je personeelsnummer waarop ik je kan vinden in de database.

Na een verhuizing komt dat id dus meerdere malen voor!!! Het recordNr is er alleen voor om te zorgen dat iedere entry uniek is.

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 20:10

HenkS

Da_king alias HenkS

Verwijderd schreef op 09 september 2002 @ 11:34:
[...]


Dat ligt er maar aan wat je wilt bereiken.

Ik wil dat er nooit data verloren kan gaan. Stel dat dit een adressenbestand is, dan wil ik over een jaar ook nog weten waar jij voor je verhuizing woonde. Het id is dan bijvoorbeeld je personeelsnummer waarop ik je kan vinden in de database.

Na een verhuizing komt dat id dus meerdere malen voor!!! Het recordNr is er alleen voor om te zorgen dat iedere entry uniek is.
heb je gelijk in, ben zelf ook met zoiets bezig.. alleen dan voor DNS zut

tja dan of een select ... ophogen ... insert

maar als t ff kan een update doen id=(id+1)

Verwijderd

Topicstarter
HenkS schreef op 09 september 2002 @ 11:39:
[...]
maar als t ff kan een update doen id=(id+1)
Op zich lost dat het probleem niet echt op. Het aantal queries wordt er dan niet minder van.

In plaats van een SELECT en een INSERT heb ik dan een INSERT en een UPDATE.

Misschien dat de laatste combinatie (iets) sneller is (?) :?

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 20:10

HenkS

Da_king alias HenkS

beste lijkt me dan dat je een hele snelle insert doet dus alleen het id!

dat krijg je toch meteen terug met mysql_insert_id(); en dan pas alles 'inserten' dmv een update...

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Verwijderd schreef op 09 september 2002 @ 11:45:
In plaats van een SELECT en een INSERT heb ik dan een INSERT en een UPDATE.

Misschien dat de laatste combinatie (iets) sneller is (?) :?
Nee, een UPDATE is niet sneller dan een SELECT. Een UPDATE moet namelijk een record opzoeken en dat vervolgens wijzigen. Een SELECT hoeft hem alleen maar op te zoeken.

Never underestimate the power of


Verwijderd

Topicstarter
cameodski schreef op 09 september 2002 @ 12:10:
[...]

Nee, een UPDATE is niet sneller dan een SELECT. Een UPDATE moet namelijk een record opzoeken en dat vervolgens wijzigen. Een SELECT hoeft hem alleen maar op te zoeken.
Dat begrijp ik, maar het voordeel van de UPDATE is dat je PHP het id niet hoeft te laten ophogen. Vandaar mijn twijfel.

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

code:
1
2
INSERT INTO TABLE (id, bla)
VALUES (SELECT MAX(id) + 1 FROM TABLE, 'bla')

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
robjanssen schreef op 09 september 2002 @ 20:48:
code:
1
2
INSERT INTO TABLE (id, bla)
VALUES (SELECT MAX(id) + 1 FROM TABLE, 'bla')
right, met mysql..

Verder kan je ontwerp niet kloppen.. personeels-nummers sla je op in de tabel personeel, en dan refereer je daarna vanuit je adressen-tabel.. Dan hoef je bij de adressen-tabel toch nooit meer een id te genereren voor je personeels-lid?
Pagina: 1