Avatar billede master_fatman Nybegynder
14. april 2004 - 16:04 Der er 2 kommentarer og
1 løsning

INSERT INTO i 2 tabeller, i samme SPROC?

Hej med jer,

Jeg sidder og hiver mig selv lidt i håret!

Jeg har 2 databaser, som hver især indeholder 2 identiske tabeller.

TABEL A og TABEL B.

INSERT, UPDATE og DELETE sker på begge disse tabeller.

Så har jeg en tredje tabel, TABEL C, som kun ligger i den ene db, sammen med TABEL B.

TABEL C skal der også skrives i, når der skrives i A OG B.

Men..........

Det jeg skal have skrevet i TABEL C, er primær nøgle feltet fra TABEL B.

Hvordan lader det sig gøre?

Jeg har kigget lidt på SCOPE_IDENTITY(), men jeg kan ikke få det til at virke.

Nogen forslag?

----------------------------------------------------------------

CREATE PROCEDURE dbo.spCustomerInsert
(
@Customer varchar(255),
@StartMinuttes varchar(50),
@StartHours varchar(50),
@StartDays varchar(50),
@StartMonths varchar(50),
@EndMinuttes varchar(50),
@EndHours varchar(50),
@EndDays varchar(50),
@EndMonths varchar(50),
@Note text
)
AS

************
** TABEL B **
************

SET NOCOUNT ON
INSERT INTO tblCustomer_Customers
(Customer) VALUES(@Customer)

************
** TABEL C **
************

SET NOCOUNT ON
INSERT INTO tblCustomer_Status
(
CustomerID,
StatusID,
ServiceID,
ErrorID,
dtStartMinuttes,
dtStartHours,
dtStartDays,
dtStartMonths,
dtEndMinuttes,
dtEndHours,
dtEndDays,
dtEndMonths,
Note,
DateAdded
)

VALUES
(
SCOPE_IDENTITY(),
1,
1,
1,
@StartMinuttes,
@StartHours,
@StartDays,
@StartMonths,
@EndMinuttes,
@EndHours,
@EndDays,
@EndMonths,
@Note,
GETDATE()
)

Mvh

MF
Avatar billede trer Nybegynder
14. april 2004 - 17:14 #1
Lav en trigger for update og insert på tabel b - og indsæt derfra i tabel c.

I triggeren har du adgang til et par virtuelle tabeller (skyggetabeller på godt dansk) som hedder INSERTED og DELETED. Ved insert er der data i INSERTED og ved UPDATE er der gamle data i DELETED og nye data i INSERTED. 

skabelon:

create trigger mytrigger on tabelb
for insert, update
as
begin
  insert into tabelc
  select * from inserted
end
Avatar billede master_fatman Nybegynder
19. april 2004 - 10:47 #2
jeg løste det ved at lave en select max([ID]) from ....

ellers tak for svaret.
Avatar billede trer Nybegynder
19. april 2004 - 13:20 #3
Du kan ikke forvente at SELECT MAX() giver den sidst indsatte record fra en given klient et flerbruger system...
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