Avatar billede fennec Nybegynder
31. januar 2003 - 09:18 Der er 6 kommentarer og
1 løsning

insert og update i en sætning

jeg har noget data som jeg skal sætte ind i en tabel, men hvis rækken eksistere skal der laves en update istedet.

Er det mulig at lave i en sætning, så jeg er fri for at først undersøge om rækken er der, og derefter lave en insert eller update???
Avatar billede proaccess Nybegynder
31. januar 2003 - 09:52 #1
UPDATE Tabel1 RIGHT JOIN Tabel2 ON Tabel1.Kunde = Tabel2.Kunde SET Tabel1.Kunde = [Tabel2].[Kunde], Tabel1.Navn = [Tabel2].[Navn];
Avatar billede larildsen Nybegynder
31. januar 2003 - 11:46 #2
Ikke helt forstået !
Mener du at du vil insert'e en række i en tabel, og opdatere en anden række i samme eller anden tabel i en atomar operation ?
I så fald skal du lave en transaktion, f. eks.

BEGIN TRAN
INSERT INTO TABA VALUES ('X')
UPDATE TABB SET NAME = 'KNUD' WHERE ID = 47
COMMIT TRAN
Avatar billede kichian Nybegynder
02. februar 2003 - 14:44 #3
Nej, det kan ikke lade sig gøre. Men hvis man er doven og har unik-index på de data der ikke må duplikeres, så kan du altid udføre en insert efterfuldt af en update. Dvs. at hvis insert fejler, så glem fejlen og fortsæt.
En mere elegant løsning, men tåbelig hvis andre tabeller har fremmednøgler til den aktuelle tabel er, at starte med at slette data fra tabellen og derefter indsætte. Ingen fejl og ingen reel forskel på insert og update.
Avatar billede janus_007 Nybegynder
02. februar 2003 - 17:39 #4
Ja korrekt som kichian siger!!
En update er faktisk en delete-insert i forklædning :O)
Avatar billede wann Nybegynder
03. februar 2003 - 11:58 #5
Jeg ved ikke om dette kan give dig en ledetråd.

begin tran
if exists ( select * from tbl_a where id = 12)
  update tbl_a set navn = 'Hans Hansen' where id = 12
else
  insert into tbl_a (id, navn) values (12, 'Hans Hansen')
commit tran

Du kunne eventuelt pakke det pænt ind i en Stored Procedure.
Avatar billede fennec Nybegynder
14. marts 2003 - 11:06 #6
Der er ikke noget der kan bruges, og nu har den kørt længe nok
Avatar billede janus_007 Nybegynder
14. marts 2003 - 13:08 #7
Normalt plejer man at kommentere de venlige løsningsmetoder der er kommet på bordet. Måske ligger personerne inde med meget mere viden om netop dit problem, og ønsker måske lidt feedback fra dig. At tro, at alt bliver serveret på et sølvfad for 15point er måske lige utopisk nok!

Hygge til alle og god weekend.
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