Avatar billede isdan Nybegynder
23. juli 2002 - 13:51 Der er 8 kommentarer og
1 løsning

returnere ID'et ved Insert

Hvårdan er det nu hvis man f.eks har en tabel med 2 coloner ID som er autonumerisk nøglefelt og gruppe som er almindeligt text felt. Og nu tilføjer jeg ny gruppe og samtidig får at vide hvilket id jeg fik tildelt
Avatar billede zaknafein Praktikant
23. juli 2002 - 13:56 #1
Enten bruger du såkalte "triggers" eller gør du sådan her:

sql ="SET NOCOUNT ON;INSERT INTO dintabel (gruppe) VALUES ('gruppenavn_variabel');SELECT @@IDENTITY AS NewID;"
set newRs = Conn.execute(sql)
if not rs = eof then
  Dit_nye_id = rs(0)
end if
Avatar billede zaknafein Praktikant
23. juli 2002 - 13:58 #2
"Set Nocount" kvæler output fra den normale insert statement.
@@IDENTITY returnerere den fornyeligt indsatta ID. Og det sker ved en såkaldt Atomar handling. Dvs intet kan forstyrrer det returnerede ID.

Hvis du bare vælger det højeste id, kan du jo god risikere at der er kommet 10 nye ID'er ind, inden din select stament bliver udført!
Avatar billede zaknafein Praktikant
23. juli 2002 - 14:00 #3
Grunden til at jeg gør sådan her:
Dit_nye_id = rs(0)
og ikke
Dit_nye_id = rs("NewID")
er at hvis tabellen indeholder en Trigger i forvejen, vil du IKKE får returneret noget. (Jo hvis din trigger returnerede id AS NewId). Men så er du sikker.

Hvis din tabel indeholder en trigger, vil det være den du får tilbage, men du vil så ikke mærke forskel, på om det er din SQL med NOCOUNT eller Trigger'en der returnere dit ID.
Avatar billede jakobandersen Nybegynder
23. juli 2002 - 17:08 #4
Du kan gøre sådan her:

INSERT INTO dintabel( felt1, felt2 ) VALUES( værdi1, værdi2 );
SELECT @@IDENTITY;
Avatar billede solle Nybegynder
24. juli 2002 - 16:17 #5
Der er bare et lille men med @@identity .. Den bliver opdateret langsommere end insert .. dvs. indsættes flere kan @@identity returnere forkert id...... Just a notice ;)
Avatar billede isdan Nybegynder
29. juli 2002 - 09:59 #6
Zaknafein jeg syns du skal have point'ene.
Avatar billede jakobandersen Nybegynder
08. august 2002 - 13:04 #7
Zaknafin-> Vil du ikke have pointene jeg kan godt smide dem til dig
Avatar billede zaknafein Praktikant
12. august 2002 - 08:50 #8
Joo tak. Tilbage fra ferie nu. Derfor svarede jeg ikke :)
Avatar billede jakobandersen Nybegynder
12. august 2002 - 16:04 #9
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

Djurslands Bank

IT-udvikler

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Tech Lead til Datacenter Operations