Avatar billede cborg Nybegynder
03. oktober 2003 - 15:09 Der er 16 kommentarer og
1 løsning

Wipe inserted?

Findes der en måde at tømme indhold af de virtuelle inserted tables i mssql?
Avatar billede bjornicle Nybegynder
05. oktober 2003 - 13:13 #1
Taenker du paa et View eller temporaere tabeller ?
Et view er ikke en tabel som saadan, den henter bare data fra andre tabeller, dvs hvis du vil tømme dette skal du slette fra de tabeller den henter fra, hvis du taenker paa en temporaer tabel saa kan du slette indholdet ligesom i en normal tabel
Avatar billede cborg Nybegynder
06. oktober 2003 - 08:52 #2
Jeg tænker netop på en midlertidig (temporary) tabel! Når man indsætter, updater eller deleter eksisterer dataen også i det virtuelle 'inserted' eller 'deleted' table. Hvordan man man slette al data fra disse? Jeg har prøvet alt. Er det muligt?
Avatar billede bjornicle Nybegynder
06. oktober 2003 - 09:09 #3
Er det de tabeller du kalder fra en trigger ?
Saa eksistere de jo kun i den transaction du er i
Avatar billede cborg Nybegynder
06. oktober 2003 - 09:19 #4
Mit problem er at jeg er igang med at oversætte fra Sybase syntax til mssql. I Sybase Adaptive Server Anywhere benyttes keywordet 'newdata' til at referere til de nyeste indsatte data. Der findes ikke noget i MSSQL som umiddelbart virker tilsvarende.

Den måde jeg umiddelbart troede at det virkede på, var ved at hente fra en midleridige 'inserted' tabel. Men åbenbart slettet indholdet af 'inserted tabellen' ikke efter fx et insert statement. Så når jeg anden gang kalder

insert into tabel(TableName)
values(inserted.Misc1) <- bare et eksempel

Brokker den sig og fortæller at Misc1 referere til mere end en værdi.

Hvis du kunne hjælpe mig, skal jeg nok smække nogle flere point på :)
Avatar billede bjornicle Nybegynder
06. oktober 2003 - 09:29 #5
hvis du har mulighed for at paste det kode du har ville det vaere laekkert
Avatar billede cborg Nybegynder
06. oktober 2003 - 09:31 #6
kk, 2 sek
Avatar billede cborg Nybegynder
06. oktober 2003 - 09:34 #7
et eksempel fra Sybase:

update c3i.Code
set Code=newdata.Misc_001, Descr= newdata.Misc_002
where CodeID= newData.CodeID;

det skal jeg have oversat til MSSQL. Et forsøg har været
Avatar billede cborg Nybegynder
06. oktober 2003 - 09:35 #8
update c3i.Code
set Code=(select Misc_001 from c3i.Code, inserted),
Descr= newdata.Misc_002
where CodeID= newData.CodeID;
Avatar billede cborg Nybegynder
06. oktober 2003 - 09:37 #9
bah... drop den sidste kommentar jeg prøver igen:

update c3i.Code
set Code=(select Misc_001 from c3i.Code, inserted),
    Descr= (select Misc_002 from c3i.Code, inserted)
where CodeID= (select CodeID from c3i.Code, inserted);

Det virker også fint nok i første forsøg. Men åbenbart slettes data ikke fra inserted. Når triggeren kører igen, brokker den sig om at det eksisterer mere end blot 1 af variablerne Misc_001, Misc_002 og Code, ikke derfor ikke ved hvilke der skal bruges.
Avatar billede bjornicle Nybegynder
06. oktober 2003 - 09:47 #10
Det jeg maaske tror du vil gore er at:

update c3i.Code
set Code=(select Misc_001 from inserted),
    Descr= (select Misc_002 from inserted)
where CodeID= (select CodeID from inserted);
Avatar billede cborg Nybegynder
06. oktober 2003 - 10:00 #11
Nu brokker den sig over noget nyt. Jeg kigger lige på sagen og vender tilbage :)
Avatar billede bjornicle Nybegynder
06. oktober 2003 - 10:06 #12
bruger du koden i an stored proc, en trigger, eller hvor ?
kan du evt. paste alt koden til transactionen ?
Avatar billede cborg Nybegynder
06. oktober 2003 - 10:15 #13
Der var lige nogle flere småting, men din ide gjorde udfaldet :) Takker
Avatar billede cborg Nybegynder
06. oktober 2003 - 10:15 #14
Hvis du smider et svar, smider jeg nogle point :)
Avatar billede cborg Nybegynder
06. oktober 2003 - 10:16 #15
Så ikke lige din kommentar. Koden skulle bruges til en Trigger.
Avatar billede bjornicle Nybegynder
06. oktober 2003 - 10:20 #16
Kanon at det virker ! :)
Avatar billede cborg Nybegynder
06. oktober 2003 - 10:34 #17
tak for hjælpen!
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