Çözüldü SQL Server Stored Procedure Insert edilen değerin ID'sini almak

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Sinan Uğurlu

Kilopat
Katılım
30 Mayıs 2018
Mesajlar
496
Çözümler
12
Yer
Datacenter
Daha fazla  
Cinsiyet
Erkek
Meslek
Yazılım ve Ağ Altyapı Danış.
SP'de bir Departman ekleme prosedür'üm var, INSERT komutu ile ekliyorum, ancak SP içerisinde bir de Log ekliyorum, Burada'da tblLog tablosunda yer alan targetID değerinde bir önceki eklediğim ID'yi eklemem lazım, yardımcı olur musunuz?
Mevcut SP;

SQL:
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[createNewDepartman] @firmaID nvarchar(128), @departmanAdi nvarchar(128), @departmanYetkili nvarchar(128), @userID nvarchar(128)
AS
 BEGIN

INSERT INTO tblDepartman (firmaID,
 departmanAdi,
 departmanSorumlu
 )Output inserted.Id
 VALUES ( @firmaID, @departmanAdi, @departmanYetkili)

INSERT INTO tblLog (logDate,logDetail,logType,userID,targetID) VALUES( getdate(), @departmanAdi + ' isimli departmanı ekledi',33, @userID, 'buraya tblDepartman'dan dönen ID gelmesini istiyorum') END
 
Çözüm
insert satırının altında aşağıdaki kodlardan herhangi birini kullanarak son eklenen id değerini alabilirsin.

SELECT SCOPE_IDENTITY()
SELECT @@IDENTITY
SELECT IDENT_CURRENT(‘tabloadı’)
Bu kod ile işimi hallettim, teşekkür ederim.

SQL:
DECLARE @Firstname AS nvarchar(128)

SET @Firstname = (SELECT Firstname FROM AspNetUsers WHERE Id = @userID)

Diğer gönderdiğim değerleri kullanarak SET komutu ile verdiğim ID'yi aldım.
insert satırının altında aşağıdaki kodlardan herhangi birini kullanarak son eklenen id değerini alabilirsin.

SELECT SCOPE_IDENTITY()
SELECT @@IDENTITY
SELECT IDENT_CURRENT(‘tabloadı’)
 
insert satırının altında aşağıdaki kodlardan herhangi birini kullanarak son eklenen id değerini alabilirsin.

SELECT SCOPE_IDENTITY()
SELECT @@IDENTITY
SELECT IDENT_CURRENT(‘tabloadı’)
Bu kod ile işimi hallettim, teşekkür ederim.

SQL:
DECLARE @Firstname AS nvarchar(128)

SET @Firstname = (SELECT Firstname FROM AspNetUsers WHERE Id = @userID)

Diğer gönderdiğim değerleri kullanarak SET komutu ile verdiğim ID'yi aldım.
 
Çözüm
Bu kod ile işimi hallettim, teşekkür ederim.

SQL:
DECLARE @Firstname AS nvarchar(128)

SET @Firstname = (SELECT Firstname FROM AspNetUsers WHERE Id = @userID)

Diğer gönderdiğim değerleri kullanarak set komutu ile verdiğim ID'yi aldım.

Bu tür bir Kod'a benim de ihtiyacım var ama aynı anda 10-100 kişinin kayıt işlemi yaptığında bu scope işinin doğruluğundan nasıl emin olabiliyorsunuz?
 
Bu tür bir Kod'a benim de ihtiyacım var ama aynı anda 10-100 kişinin kayıt işlemi yaptığında bu scope işinin doğruluğundan nasıl emin olabiliyorsunuz?
Ben işimi arkadaşın önerisi ile değil, kendi paylaştığım kod ile hallettim. Örneğin; Stored Procedure değerine Kullanıcı Adı yada bu kayıta özel 4-5 değer gönderdiniz, benim verdiğim kodda yer aldığı şekilde SELECT komutu ile bu kayıt'ta değeri sorguluyor böylelikle gelen değeri alıyorsunuz.

SQL:
DECLARE @Firstname AS nvarchar(128)

SET @Firstname = (SELECT Firstname FROM AspNetUsers WHERE Id = @userID)
 

Geri
Yukarı