[SQL / VB.Net] identity seed getal, ophalen voor update

Pagina: 1
Acties:

  • Remco
  • Registratie: Januari 2001
  • Laatst online: 17:05
Ik heb 2 tabellen.
In de eerste tabel word data weggeschreven met onder andere een identity seed column.
In de tweede tabel word ook data weggeschreven, maar 1 van de velden moet het autonummer getal bevatten van de eerste tabel.
Alle twee de tabellen worden tegelijkertijd gevuld.

Mijn probleem is dus, dat ik nog niet weet wat het nummer zal zijn wat tabel 1 zal gaan gebruiken.
Ik kan natuurlijk wel het laatste record opvragen, maar het kan zo zijn dat een andere gebruiker in de tussentijd een record zal toevoegen in de tabel, en dus dan klopt het weer niet.
Ook heb ik zitten denken om de tabel te locken.
Dat zal op zich niet zo'n probleem zijn, maar het lijkt me niet de juiste oplossing.

Via google heb ik wel gezocht, maar ik kan maar niet de juiste oplossingen vinden.
Binnen mijn sql en vb boeken kan ik er ook niks over vinden.

Mijn vraag is, hoe lossen jullie dit soort zaken op ?
Ik zit me al een tijdje suf te piekeren en te zoeken, maar kom er niet echt uit.

The best thing about UDP jokes is that I don't care if you get them or not.


  • whoami
  • Registratie: December 2000
  • Laatst online: 30-04 15:31
Aangezien je het hebt over identity seeds, ga ik er van uit dat je SQL Server gebruikt.
Indien dit het geval is:
kijk eens naar
@@identity
en
scope_identity()

https://fgheysels.github.io/


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 17:05
Bedankt.
In vb.net word het dan:
Visual Basic:
1
2
3
4
5
6
7
8
dim insertcmd as string = "insert into t_calls (call_datum, call_onderwerp) values (@call_datum, @call_onderwerp) select scope_identity() as call_id"
mycommand.Parameters.Add(New SqlParameter("@call_datum", SqlDbType.DateTime))
mycommand.Parameters("@call_datum").Value = DateTimePicker1.Value
---knip---
dim call_id as integer
---knip---
call_Id = mycommand.ExecuteScalar()
MsgBox(call_Id.ToString)

Ik heb een beetje geknipt in de code, maar het moet zo duidelijk zijn.

[ Voor 5% gewijzigd door Remco op 05-09-2005 16:46 ]

The best thing about UDP jokes is that I don't care if you get them or not.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 10:06

curry684

left part of the evil twins

Wel heel erg geknipt, want dit gaat niet werken: je mist een puntkomma tussen de select en de insert, en scope_identity is een functie dus daar moeten haakjes bij :)

Professionele website nodig?


  • dominic
  • Registratie: Juli 2000
  • Laatst online: 08-02 14:55

dominic

will code for food

curry684 schreef op maandag 05 september 2005 @ 16:10:
Wel heel erg geknipt, want dit gaat niet werken: je mist een puntkomma tussen de select en de insert, en scope_identity is een functie dus daar moeten haakjes bij :)
Een ; is niet nodig bij t-sql.. En inderdaad moet scope_identity als scope_identity() aangeroepen worden.

[ Voor 15% gewijzigd door dominic op 05-09-2005 16:19 ]

Download my music on SoundCloud


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 17:05
Gefixt ;)
Had het overgetypt i.p.v. copy/paste.

The best thing about UDP jokes is that I don't care if you get them or not.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 10:06

curry684

left part of the evil twins

dominic schreef op maandag 05 september 2005 @ 16:17:
[...]

Een ; is niet nodig bij t-sql
In dit geval niet idd, pardon :) Neemt niet weg dat het stukken handiger leest met puntkomma natuurlijk.

Professionele website nodig?

Pagina: 1