09. september 2015 - 23:07 Der er 3 kommentarer og
1 løsning

Indsæt nyt samtidig med indsæt er noget eksisterende...

Det er til en log...

Det er nemt nok, at indsætte en ny række som dette...
INSERT INTO tblLog (FromId,HandledBy) VALUES (1234,'FV')

Imidlertidig har jeg to id'er fra andre tableller, som skal følge efter...
CustomerName får jeg via tblCustomers, hvor jeg har ID'et til rådighed
ContactsName får jeg via tblContacts, hvor jeg har ID'et til rådighed

Hvordan får jeg udfyldt CustomerName,CustomerPhone,ContactName værdierne i min INSERT INTO sætning?

INSERT INTO tblLog (FromId,HandledBy,CustomerName,CustomerPhone,ContactName) VALUES (1234,'FV',??????????)
Avatar billede arne_v Ekspert
10. september 2015 - 01:37 #1
Hvis applikationen selv har fundet vaerdierne, saa skal de jo bare saettes helt normal.

Hvis de er genereret automatisk ved insert saa skal du:

INSERT ...
SELECT SCOPE_IDENTITY()
INSERT ...
SELECT SCOPE_IDENTITY()
INSERT ...

for at have vaerdier og kunne indsaette dem.
Avatar billede Slettet bruger
10. september 2015 - 08:58 #2
Du kan lave en stored procedure der holder IDet og selecter dine ID fra de 2 tabeller og laver inserts sammetid.

CREATE PROC [dbo].[testproc]

@ID int

AS
BEGIN

DECLARE @Fromid int
DECLARE @Handledby nvarchar(50)
DECLARE @CustomerName nvarchar(50)
DECLARE @CustomerPhone nvarchar(50)
DECLARE @ContactName nvarchar(50)


--FromID and HandledBy
select @fromid = fromid,@Handleby = Handledby from xxx.xxxx
where fromid = @fromid

--CustomerTable
select @CustomerName = CustomerName from xxx.xxxx
where ID = @fromid

--ContactTable
select @CustomerPhone = CustomerPhone, @ContactName = ContactName from xxx.xxxx
where ID = @Fromid

--Inser statement

INSERT INTO tbllog (FromID,Handledby,CustomerName,CustomerPhone,ContactName) Values(@Fromid,@HandleBy,@CustomerName,@CustomerPhone,@ContactName)



Dette kunne være en mulighed - Bær over med mulige skrive fejl, har ikke testet noget af. Hvis du ikke vil angive et ID hver gang du kalder din Stored procedure vil jeg lave en cursor der looper over hver ID du har.

Ved ikke om det er sådan noget du leder efter.
Avatar billede Slettet bruger
10. september 2015 - 08:59 #3
og der skulle selvfølgelig så @ID i dine where clauses (såfremt det er samme ID i alle tabeller :)
10. september 2015 - 10:28 #4
arne_v - jeg forstår ikke helt det med SELECT SCOPE_IDENTITY()
plaidDK - det kan jeg omsætte til noget jeg kan forstå, således vil jeg kunne sende FromId, HandlerBy, CustomerId og ContactId fra min app til en sp, og få hentet værdierne fra Customer og Contact inden den endelige insert sker - mægtigt :-)

Tak for jeres tid
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