Merhaba arkadaşlar,
Logo Tiger veritabanında Stokların tutulduğu bir tablo var. (LG_001_ITEMS)
Bu tabloya her yeni kayıtta 2. veritabanındaki Stok (LG_002_ITEMS) tablosuna aynısını yazmam gerekiyor.
Tabloda 100 ü geçkin alan var. Her bir alana değişken atayıp sonra insert için yazdığımda*
işlem başarılı oluyor lakin sql server da hissedilebilir bir yavaşlama oluyor.
bende araştırdım nasıl daha kısa bir şekilde yazabilirim diye*
aşağıdaki kodu yazdım.
Kod:
CREATE TRIGGER ITEMS_insert
ON LG_001_ITEMS
AFTER INSERT AS
* *BEGIN
--Burda @s lere Column isimleri geliyor---------------------------------------------------------------------------------------------------
* * * *DECLARE @S varchar(MAX)
* * * *SELECT @S=(SELECT CONVERT(Varchar,COLUMN_NAME+',') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'LG_001_ITEMS' FOR XML PATH(''))
* * * *SET @S=LEFT(@S, LEN(@S) - 1) --sondan bir karakter siliyor
* * ------------------------------------------------------------------------------------------------------------------------------------------
SET IDENTITY_INSERT LG_002_ITEMS ON
--Eklenen kaydın Logicalref ini alıyoruz---------------------------------------------------------------------------------------------------
DECLARE @LogicalRef_i INT
SELECT @LogicalRef_i=LOGICALREF FROM inserted
DECLARE @Ekle_i VARCHAR(MAX)
SET @Ekle_i='INSERT INTO LG_002_ITEMS ('+@S+') SELECT * FROM LG_001_ITEMS WHERE LOGICALREF='+CONVERT(varchar(10),@LogicalRef_i)
EXEC(@Ekle_i)
--------------------------------------------------------------------------------------------------------------------------------------------
SET IDENTITY_INSERT LG_002_ITEMS OFF
END
SQL de elle ekleme yaptığımda her hangi bir hata çıkmıyor ama Logodan ekleme yapınca aşağıdaki resimdeki hatayı alıyorum.
Sizce ne yapabilirim.
WhatsApp Image 2023-01-19 at 09.01.48.jpg (Dosya Boyutu: 720,43 KB / İndirme Sayısı: 2)
Logo Tiger veritabanında Stokların tutulduğu bir tablo var. (LG_001_ITEMS)
Bu tabloya her yeni kayıtta 2. veritabanındaki Stok (LG_002_ITEMS) tablosuna aynısını yazmam gerekiyor.
Tabloda 100 ü geçkin alan var. Her bir alana değişken atayıp sonra insert için yazdığımda*
işlem başarılı oluyor lakin sql server da hissedilebilir bir yavaşlama oluyor.
bende araştırdım nasıl daha kısa bir şekilde yazabilirim diye*
aşağıdaki kodu yazdım.
Kod:
CREATE TRIGGER ITEMS_insert
ON LG_001_ITEMS
AFTER INSERT AS
* *BEGIN
--Burda @s lere Column isimleri geliyor---------------------------------------------------------------------------------------------------
* * * *DECLARE @S varchar(MAX)
* * * *SELECT @S=(SELECT CONVERT(Varchar,COLUMN_NAME+',') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'LG_001_ITEMS' FOR XML PATH(''))
* * * *SET @S=LEFT(@S, LEN(@S) - 1) --sondan bir karakter siliyor
* * ------------------------------------------------------------------------------------------------------------------------------------------
SET IDENTITY_INSERT LG_002_ITEMS ON
--Eklenen kaydın Logicalref ini alıyoruz---------------------------------------------------------------------------------------------------
DECLARE @LogicalRef_i INT
SELECT @LogicalRef_i=LOGICALREF FROM inserted
DECLARE @Ekle_i VARCHAR(MAX)
SET @Ekle_i='INSERT INTO LG_002_ITEMS ('+@S+') SELECT * FROM LG_001_ITEMS WHERE LOGICALREF='+CONVERT(varchar(10),@LogicalRef_i)
EXEC(@Ekle_i)
--------------------------------------------------------------------------------------------------------------------------------------------
SET IDENTITY_INSERT LG_002_ITEMS OFF
END
SQL de elle ekleme yaptığımda her hangi bir hata çıkmıyor ama Logodan ekleme yapınca aşağıdaki resimdeki hatayı alıyorum.
Sizce ne yapabilirim.