Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

$€!!$ Microsoft altså

2 views
Skip to first unread message

Leif Neland

unread,
Dec 17, 2012, 8:24:47 AM12/17/12
to
Jeg har fundet det smart at benytte en
"insert into t_produkter (... feltnavne ..)
output inserted.id
values (?,?....)"
så jeg får det autogenererede id i samme kald som jeg bruger til at
indsætte recorden.

Det fungerer fint.

Nu har jeg sat en trigger på for at køre en funktion, når der indsættes
en record.

Nu får jeg denne fejl:

The target table 't_produkter' of the DML statement cannot have any
enabled triggers if the statement contains an OUTPUT clause without
INTO clause

Er der nogen logisk grund til at man ikke må det, andet end at nogen
har været doven/inkompetent hos Microsoft??

Så må jeg prøve dette workaround:

http://stackoverflow.com/questions/5558582/sql-server-output-clause-into-a-scalar-variable

declare @ID table (ID int)

insert into MyTable2(ID)
output inserted.ID into @ID
values (1)
select * from @ID

... lidt senere

Det ser ud til at virke.

Leif

--
Husk kørelys bagpå, hvis din bilfabrikant har taget den idiotiske
beslutning at undlade det.


Arne Vajhøj

unread,
Dec 17, 2012, 6:50:49 PM12/17/12
to
Hvorfor ikke bare:

query "INSERT ..."
query "SELECT SCOPE_IDENTITY()"

eller hvis dit database API tillader multiple SQL sætninger i
samme query:

query "INSERT ...; SELECT SCOPE_IDENTITY()"

Arne


0 new messages