Avatar billede speder Nybegynder
05. september 2003 - 10:28 Der er 9 kommentarer og
1 løsning

Overføre autonummereringsværdi til anden tabel

Hej

Jeg har en tabel:

Tabel 1
Id (autonummerering) Value
1                    asdf
2                    qwer

Når jeg opretter en ny record i Tabel 1 vil jeg gerne linke recorden til Tabel 2, men hvordan får jeg overført autonummereringsværdien. Det virker lidt bøvlet at først skulle oprette recorden, dernæst undersøge hvad autonummereringsværdien blev, og så først derefter oprette en record i Tabel 2.

På et tidspunkt synes jeg at jeg læste noget om at det kan gøres i ét go, men hvordan?

Takker,

S
Avatar billede terry Ekspert
05. september 2003 - 10:38 #1
It all depends on HOW you are working with this data!

If you have a form in an application which is based in table2 then you may have a drop down list showing values from table1. When you choose a value from the drop down (table1) the ID goes into the foreign key of table2!
Avatar billede speder Nybegynder
05. september 2003 - 10:41 #2
Desværre skal hele operationen foretages i "one go", dvs. at der f.eks. oprettes en record i Tabel 1 som f.eks. får autonummereringsværdien 581. Denne værdi skal så overføres til Tabel 2.
Avatar billede ocp Nybegynder
05. september 2003 - 10:43 #3
brug en insert trigger.
Avatar billede ocp Nybegynder
05. september 2003 - 10:48 #4
create trigger ....

insert into table2
select id
from inserted
Avatar billede terry Ekspert
05. september 2003 - 10:49 #5
ocp>lets say he uses a trigger, normally there will be other fields in table2, how does he get the data into those fields without entering them? If there are no other fields what is the point in having the table?
Avatar billede terry Ekspert
05. september 2003 - 10:50 #6
speder>Are you trying to tell me that there is only one field in table2? Whats is the point in that?
Avatar billede speder Nybegynder
05. september 2003 - 10:53 #7
Nej, der er mange felter. Jeg har kigget lidt rundt på nettet og de fleste steder ser det ud til at de anbefaler en Trigger. En anden mulighed er at skrive en Stored Procedure. Det undrer mig bare at der ikke er en eller anden generisk måde at gøre det på (jeg mener f.eks. at PHP har en metode indbygget der kan gøre det her umiddelbart).
Avatar billede terry Ekspert
05. september 2003 - 11:04 #8
speder>Can you explain your relationships! If
ID in table1 is the primary key (unique) then it is the foreign key in table2. Which in a one to many relationship will mean that itis NOT unique (more than one record has the same value).

So what record in table2 are you going to update?
Avatar billede ocp Nybegynder
05. september 2003 - 11:48 #9
Jeg har svært ved at forestille mig hvordan PHP skulle kunne gøre noget som helst der har med håndtering af identity-kolonner at gøre - PHP er jo bare et programmeringssprog. Denne løsning giver dig rimeligt frie hænder:

create proc spInsertRow
  @test varchar(50)
as
  insert into tbl1 values(@test)
  select @@identity

og håndtere det således fra koden:

nytID = cn.execute("spInsertRow 'dette er en ny række'").fields(0).value
cn.execute("insert into tbl2 values(" & nytid & ",'id for ny række i tbl 1')")
Avatar billede speder Nybegynder
05. september 2003 - 12:15 #10
Takker - Det er vist den optimale løsning.
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