Scope_Identity() işlevi, bir tablo ekinden en son oluşturulan birincil anahtar değerini sağlar. Bir kümenin eklenmesinden (belirli bir sorgudan kaynaklanan bir ek) birden çok anahtar almanın genel olarak kabul edilen bir yolu var mı?SQL Server kullanarak tablo eklerinden yeni oluşturulan çok sayıda anahtar değeri almanın en iyi yolu?
1
A
cevap
1
SQL Server 2005'ten itibaren, döndürülen değerler kümesini almak için OUTPUT clause'u kullanabilirsiniz. bağlantılı makaleden:
Aşağıdaki örnek EmployeeSales tablo oluşturur ve sonra kaynak tablolardan veri almak için bir deyim ile bir INSERT ifadesini kullanarak içine birkaç satır ekler. EmployeeSales tablosu, bir kimlik sütunu (ÇalışanNo) ve bilgisayarlı sütun (ProjectedSales) içerir. Bu değerler, SQL Server Veritabanı Altyapısı tarafından ekleme işlemi sırasında oluşturulduğundan, bu sütunlarından hiçbiri @MyTableVar'da tanımlanamaz.
USE AdventureWorks ;
GO
IF OBJECT_ID ('dbo.EmployeeSales', 'U') IS NOT NULL
DROP TABLE dbo.EmployeeSales;
GO
CREATE TABLE dbo.EmployeeSales
(EmployeeID int IDENTITY (1,5)NOT NULL,
LastName nvarchar(20) NOT NULL,
FirstName nvarchar(20) NOT NULL,
CurrentSales money NOT NULL,
ProjectedSales AS CurrentSales * 1.10
);
GO
DECLARE @MyTableVar table(
LastName nvarchar(20) NOT NULL,
FirstName nvarchar(20) NOT NULL,
CurrentSales money NOT NULL
);
INSERT INTO dbo.EmployeeSales (LastName, FirstName, CurrentSales)
OUTPUT INSERTED.LastName,
INSERTED.FirstName,
INSERTED.CurrentSales
INTO @MyTableVar
SELECT c.LastName, c.FirstName, sp.SalesYTD
FROM HumanResources.Employee AS e
INNER JOIN Sales.SalesPerson AS sp
ON e.EmployeeID = sp.SalesPersonID
INNER JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
WHERE e.EmployeeID LIKE '2%'
ORDER BY c.LastName, c.FirstName;
SELECT LastName, FirstName, CurrentSales
FROM @MyTableVar;
GO
SELECT EmployeeID, LastName, FirstName, CurrentSales, ProjectedSales
FROM dbo.EmployeeSales;
GO
0
satır sayısı ve son kimlik değerini kullanın ....
DECLARE @LastID int
DECLARE @Rows int
--your insert from a select here
SELECT @[email protected]@IDENTITY, @[email protected]@ROWCOUNT
--set of rows you want...
SELECT * FROM YourTable Where TableID>@[email protected] AND TableID<[email protected]
İlgili konular
- 1. Çok sayıda yabancı anahtar tarafından başvurulan bir tablo için silme işlemini en iyi duruma getirme
- 2. Php SQL Server tablo değeri parametresi
- 3. Çok boyutlu NSMutableArrays'i depolamanın ve almanın en iyi yolu nedir?
- 4. Linux'ta makine kimliği almanın en iyi yolu?
- 5. SQL Server şeması en iyi uygulamaları
- 6. SQL Server Management Studio - tablo listesinde birden çok filtre kullanarak?
- 7. SQL Server Kötü ve En İyi Yöntemleri
- 8. Kümelenmiş dizini (PK) SQL 2005'te değiştirmenin en iyi yolu
- 9. SQL Server denetim oturumu çok sayıda okur oluşturur
- 10. .NET'te bir dizgeden Type nesnesini almanın en iyi yolu
- 11. Ruby'de bir url almanın en iyi yolu nedir?
- 12. StrongParameters ile eksik gerekli paramları ele almanın en iyi yolu?
- 13. İlk dört bayt GUID'den Int32 almanın en iyi yolu nedir?
- 14. Geçerli kullanıcının SID'sini almanın en iyi yolu nedir?
- 15. JavaFX Canvas'dan piksel verileri almanın en iyi yolu?
- 16. SQL Management Studio nasıl yeni tablo görür?
- 17. Java'da birden çok web sayfası almanın en hızlı yolu
- 18. En yeni glibc gerektirmeyen yazılımlar oluşturmanın en iyi yolu nedir?
- 19. SQL Server 2012'de Paging ile birlikte Toplam Sayımı Almanın daha iyi yolu
- 20. SQL en çok çalıştırılan sorgu?
- 21. SQL Server kullanılmayan, ancak ayrılmış tablo alanı
- 22. Microsoft SQL Server Yönetimi'ni kullanarak bir TABLO çoğaltma
- 23. Prototip veya jQuery'yi kullanarak .lastChild'i uygulamanın en iyi yolu
- 24. Çoğu Pythonic Yolu Pandalarda Çok Sayıda Yeni Sütun Yaratma
- 25. Eklemenin/değiştirmenin en iyi yolu 1 Başkalarını korurken GET değeri?
- 26. en iyi yolu
- 27. 5 En son SQL Server
- 28. Kümelenmiş birincil anahtar, SQL Server 2005
- 29. h2 sql, çok sütunlu birincil anahtar içeren tablo oluşturulsun mu?
- 30. PHP kullanarak bir sonraki harfi almanın en etkin yolu
Mükemmel; ÇIKTI hakkında bilmiyordum. – dudeNumber4