Toon posts:

[QUERY] insert query vraagje

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

Verwijderd

Topicstarter
Hoi

Vraagje. Ik heb een tabel waarin oa een autonummering kolom zit. Een ID kolom zeg maar.
Ik wil nu een rij toevoegen aan de tabel, maar tevens terugkrijgen wat voor een ID deze rij toegewezen krijgt.
Kan dit in één query.

Ik werk momenteel op een access database

bedankt alvast
Niek

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 08:00

BierPul

2 koffie graag

Waarom moeilijk doen als het makkelijk kan :)

Gewoon

INSERT waarde INTO tabel

en dan de 2 de query

SELECT ID FROM table WHERE waarde = ingegeven waarde

Dat resultaat pleur in je in een var of array

en klaar :9

Ja man


Verwijderd

Topicstarter
Op woensdag 26 september 2001 09:28 schreef LOST_GUNT het volgende:
Waarom moeilijk doen als het makkelijk kan :)

Gewoon

INSERT waarde INTO tabel

en dan de 2 de query

SELECT ID FROM table WHERE waarde = ingegeven waarde

Dat resultaat pleur in je in een var of array

en klaar :9
Ja, maar als deze waarde nu al 3 keer in die tabel stond heb ik een probleem, krijg ik 4 ID's terug :)

Nee, ik moet iets als een RETURN hebben of iets als een LAST INSERT ID

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
[..]

Ja, maar als deze waarde nu al 3 keer in die tabel stond heb ik een probleem, krijg ik 4 ID's terug :)

Nee, ik moet iets als een RETURN hebben of iets als een LAST INSERT ID
Dat is een aloud probleem... Ik los het meestal op met:
code:
1
SELECT MAX(Id) bablablabla

Niet echt verschrikkelijk bugvrij, maar je krijgt (mits de autonummering niet op random) de laatst ingevoegde waarde... Probleem als er twee dingen tegelijkertijd worden ingevoegd, maarja, dan kan je altijd nog op die tabel een lock laten zetten... ;)

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 08:00

BierPul

2 koffie graag

Dat is ook niet zeker..want als iemand anders net een seconde later een insert doen ben je de lul :9

Een omweg is ook mogelijk maak een hidden file die een timestamp (microtime()) insert en controleer daar op.

Of er moet een andere unieke waarde zijn zoals een username ofzow (8>

Ja man


Verwijderd

Topicstarter
Niet echt verschrikkelijk bugvrij, .....
Beetje onorthodoxe manier inderdaad. En met die timestamp is ook meteen weer zp uitgebreid. In MySQL heb je zoiets als LAST_INSERT_ID() zag ik net. Hoe dat precies werkt ben ik nog niet achter, maar volgens mij wekt het niet in SQL (daar is Access toch op gebaseerd?)

Het kan toch haast niet anders dat SQL ook wel zoiets heeft?

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
[..]

Beetje onorthodoxe manier inderdaad. En met die timestamp is ook meteen weer zp uitgebreid. In MySQL heb je zoiets als LAST_INSERT_ID() zag ik net.
Nope... Bestaat gewoon niet.
Hoe dat precies werkt ben ik nog niet achter, maar volgens mij wekt het niet in SQL (daar is Access toch op gebaseerd?)
Oeps! Mondspoelen, en wel heeeeeeel snel! ;)

Access is een idee van M$ om heeeeeel gemakkelijk en snel een kleine database te bouwen zonder dat je er een it specialist voor hoeft te zijn... Dat je er SQL op los kan laten is ook pas sinds versie 3...

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 08:00

BierPul

2 koffie graag

Op woensdag 26 september 2001 10:01 schreef mentos het volgende:

[..]
maar volgens mij wekt het niet in SQL (daar is Access toch op gebaseerd?)

Het kan toch haast niet anders dat SQL ook wel zoiets heeft?
:o

Ja man


Verwijderd

Topicstarter
Oeps! Mondspoelen, en wel heeeeeeel snel! ;)

Access is een idee van M$ om heeeeeel gemakkelijk en snel een kleine database te bouwen zonder dat je er een it specialist voor hoeft te zijn... Dat je er SQL op los kan laten is ook pas sinds versie 3...
Ik neem alles terug. Uiteindelijk komt het er dus wel op neer dat je met SQL querys werkt, maar je hebt helemaal gelijk.
Wel kut dat dat helemaal niet kan met sql, dacht dat dat wel wat geavanceerder was. Maar ja, dan maar 'SELECT MAX(ID) FROM blabla

thx

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 08:00

BierPul

2 koffie graag

Op woensdag 26 september 2001 10:17 schreef mentos het volgende:

[..]

ja, dan maar 'SELECT MAX(ID) FROM blabla
Das toch een SQL query of leef ik onder water :7

Ja man


  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 11:01

Basszje

Reisvaap!]

Op woensdag 26 september 2001 10:19 schreef LOST_GUNT het volgende:

[..]

Das toch een SQL query of leef ik onder water :7
Blub blub :7

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Topicstarter
Op woensdag 26 september 2001 10:19 schreef LOST_GUNT het volgende:

[..]

Das toch een SQL query of leef ik onder water :7
Ja, dat is een SQL query.............. en?? :z

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 08:00

BierPul

2 koffie graag

Op woensdag 26 september 2001 10:28 schreef mentos het volgende:

Wel kut dat dat helemaal niet kan met sql, dacht dat dat wel wat geavanceerder was. Maar ja, dan maar 'SELECT MAX(ID) FROM blabla
Je suggereert eerst dat het niet kan met SQL en dan zeg je Hmm dan maar met deze SQL query :9

Ja man


Verwijderd

Topicstarter
Op woensdag 26 september 2001 10:33 schreef LOST_GUNT het volgende:

[..]

Je suggereert eerst dat het niet kan met SQL en dan zeg je Hmm dan maar met deze SQL query :9
Wat ik eigenlijk wil (mbv een LAST_INSERT_ID) kan niet met SQL, daarom doe ik het maar op de onorthodoxe manier, met SELECT MAX(ID) etc. *D

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 12-07 11:54
wanneer je eerst de max(id) ophaald dan kan je zelf een id genereren dus:
insert into table id = ... , bla = blah ...

wanneer deze insert mislukt dan probeer je het nog een keer met een id die weer 1 is opgehoogt totdat de insert wel lukt.
-> je weet nu precies welke id je geinsert hebt.

Bij postgresql werk je met transacties en kan je inderdaad iets met last_insert_id doen. Wanneer je in de zelfde transactie ook de nieuwe id opvraagd weet je zeker dat dat de juiste is.

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 08:00

BierPul

2 koffie graag

Op woensdag 26 september 2001 10:21 schreef BaSSzje het volgende:

[..]

Blub blub :7
offtopic:
Afbeeldingslocatie: http://www.chinfo.navy.mil/navpalib/cno/n87/images/c1.jpg

Tjek mij huis, computer kamer zit achter in en ik heb een haspeltje erachter voor mn kabel aansluiting (kan ook maar tot aan west friesland varen ivm kabel lengte :9)

Ja man


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 17-09 14:44

Jaspertje

Max & Milo.. lief

cool, ik wil ook zoeen huis :P, hebben de russen uitverkoop??!!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
cool, ik wil ook zoeen huis :P, hebben de russen uitverkoop??!!
Zie je de vlag niet dan??? Dat is duidelijk toch een chinese duikboot!!! ;)

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 17-09 14:44

Jaspertje

Max & Milo.. lief

hububububu

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 08:00

BierPul

2 koffie graag

Op woensdag 26 september 2001 10:47 schreef Jaspertje het volgende:
hububububu
Is dat Afrikaans voor blub blub blub

Ja man


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 17-09 14:44

Jaspertje

Max & Milo.. lief

nee voor stil eens, dat heb je al een keer gevraagd :z :Z

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 08:00

BierPul

2 koffie graag

* BierPul hoort de man met de sleutelhanger

Ja man


  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
* Banpei hoort de man met de sleutelhanger
Rinkelderinkel! :7

  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 09:23

Greyfox

MSX rulez

In SQL server kun je wel in 1 query de ID terug krijgen van een uitgevoerde insert.
Je gebruikt dan SELECT @@IDENTITY.
In Access weet ik niet of het kan, maar ik dacht van niet.

MSX 2 rulez more


  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 16-09 08:48
In SQL server kun je wel in 1 query de ID terug krijgen van een uitgevoerde insert.
Je gebruikt dan SELECT @@IDENTITY.
In Access weet ik niet of het kan, maar ik dacht van niet.
Nopie... Kan niet in access... In ADO kan je wel je identity opvragen, maar dat wordt niet ondersteund onder ASP... |:(
Pagina: 1