Avatar billede hansa Nybegynder
08. marts 2003 - 13:15 Der er 4 kommentarer og
1 løsning

Opdatere 2 tabeller på 1 gang

Hej
Jeg har 2 tabeller jeg skal have indsat en post - helt på 1 gang.
Problemet er at den ene tabel skal bruge den andens tabel's nøgle (id).

De 2 statements kunne se sådan her ud hver for sig:
INSERT INTO person (navn, adresse) VALUES ('Hans', 'Hjemme');
INSERT INTO kursus (personid, kursusnavn) VALUES ('125', 'Generel info');

Personid er den tabellen person's nøgle (autonummer).
Kan man ikke kæde disse 2 statements sammen?
Ellers bliver jeg først nødt til at lave en SELECT efter det første statement, for at finde personid...

Måske skal det lige nævnes at databasen er en MS SQL 2000
Avatar billede hsloth Novice
08. marts 2003 - 13:25 #1
Du kan klare problemet med en Stored Procedure.

Du laver en stored procedcure med følgende SQL:

INSERT INTO person (navn, adresse) VALUES ('Hans', 'Hjemme');
INSERT INTO kursus (personid, kursusnavn) VALUES (IDENT_CURRENT('person'), 'Generel info');

(IDENT_CURRENT('person') returnerer værdien af den sidste automatisk genererede værdi fra person tabellen. der er også mulighed for at bruge @@IDENTITY, check SQL Server Books Online.
Avatar billede hansa Nybegynder
08. marts 2003 - 13:36 #2
Kanon!
Kan jeg på samme måde hente andre kolonner fra din sidste genererede værdi?
Avatar billede hsloth Novice
08. marts 2003 - 13:47 #3
Det eneste du kan hente er _genererede_ kolonner, dvs. du kan hente een kolonne fra en tabel.

Fra Books On-line :
"IDENT_CURRENT returns the last identity value generated for a specific table in any session and any scope.

@@IDENTITY returns the last identity value generated for any table in the current session, across all scopes.

SCOPE_IDENTITY returns the last identity value generated for any table in the current session and the current scope.
"
Avatar billede hsloth Novice
08. marts 2003 - 13:48 #4
Du kan altså kun hente identity values - som navnet på funktionen jo også antyder
Avatar billede hansa Nybegynder
08. marts 2003 - 13:55 #5
ok... 1000 tak for hjælpen!
Jeg må vist hellere komme igang med at se lidt på stored procedures
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