trigger olan table da adoquery ile insert into da OUTPUT kullanma

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

trigger olan table da adoquery ile insert into da OUTPUT kullanma

Mesaj gönderen freeman35 »

Kod: Tümünü seç

SET IDENTITY_INSERT STOKLAR ON
INSERT INTO STOKLAR(sto_Guid,sto_DBCno,sto_SpecRECno,sto_iptal............
)
 OUTPUT INSERTED.*
VALUES(
newid() /*uniqueidentifier*/
,:sto_DBCno /*smallint*/
,:sto_SpecRECno /*int*/
,:sto_iptal /*bit*/
......
)
SET IDENTITY_INSERT STOKLAR OFF
mssql server 2016, mikro yazılım evi v16 stoklar tablosu.
Başka bir firma tabloya trigger eklemiş, dolayısıyla yukarıdaki sql hata vermeye başlamış.
The target table 'STOKLAR' of the DML statement cannot have any enabled triggers if the statement contains an OUTPUT clause without INTO clause
Trigger ekleyen arkadaşlardan gelen cevap, "IDENTITY_INSERT" satırlarını kaldırsın :)

https://stackoverflow.com/questions/131 ... -the-table
detaylı bir açıklama.
What about INSERTs kısmında (gerçi iki satır üstünde net yazmış ama "Don't use OUTPUT." :) ) örnek üzerine gidersem de
OUTPUT INSERTED.* INTO @tmp satırındaki INTO da ki "@tmp"
Must declare table variable @tmp hatasını veriyor

Kod: Tümünü seç

DECLARE @tmp TABLE
(
	  [sto_Guid] UNiQUEiDENTiFiER NOT NULL DEFAULT(newid())
	, [sto_DBCno] SMALLiNT NOT NULL DEFAULT((0))
	, [sto_SpecRECno] iNT NULL
	, [sto_iptal] BiT NULL

SET IDENTITY_INSERT STOKLAR ON
INSERT INTO STOKLAR(sto_Guid,sto_DBCno,sto_SpecRECno,sto_iptal............
)
 OUTPUT INSERTED.* INTO @tmp
VALUES(
newid() /*uniqueidentifier*/
,:sto_DBCno /*smallint*/
,:sto_SpecRECno /*int*/
,:sto_iptal /*bit*/
......
)
SET IDENTITY_INSERT STOKLAR OFF
SELECT * FROM @tmp
Bu konuda tecrübesi olan var mı?
Amacım, insert işlemindeki field değerlerinin geri dönmesi. Özellikle UNiQUEiDENTiFiER alanının değeri. detay tablolara kayıtlar için bu gerekli.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla