FROM tablosunu bir INSERT deyimiyle bir OUTPUT yan tümcesinde başvuruda bulunamazsınız. Bunu yalnızca bir DELETE, UPDATE veya MERGE deyimiyle yapabilirsiniz. ÇIKIŞ maddesinin (https://msdn.microsoft.com/en-us/library/ms177564.aspx)
from_table_name MSDN sayfasından
bir DELETE, UPDATE FROM deyiminde dahil bir tablo belirten bir sütun önek mi, yoksa kullanılır deyimi BİRLEŞMEK Güncellenecek veya silinecek satırları belirtmek için
Ne istediğinizi gerçekleştirmek için bir MERGE deyimi kullanabilirsiniz.
Aşağıdaki örnekte, tüm değişken tabloların olması için tabloları değiştirdim, böylece bunlar bağımsız bir sorgu olarak çalıştırılabilir ve kimlik sütunlarını ilişkiyi göstermek için farklı olarak artan IDENTITY sütunlarına değiştirdim.
ON yan tümcesi (1 = 0) her zaman DEĞİL DEĞİLDİR. Bu, USING deyimindeki tüm kayıtların hedef tabloya eklemek için kullanacağı anlamına gelir. Ayrıca, USING deyimindeki FROM tablosu OUTPUT deyiminde kullanıma hazır olacaktır. sorguda yukarıdan
DECLARE @Foo TABLE (FooId INT IDENTITY(1,1), MyData NVarchar(20))
DECLARE @Revisions TABLE (RevId INT IDENTITY(100,10), CreatedTimeStamp DATETIME)
DECLARE @InsertedRows TABLE (RevId INT, FooId INT)
INSERT INTO @Foo VALUES ('FooData1'), ('FooData2'), ('FooData3')
MERGE @Revisions AS [Revisions]
USING (SELECT FooId FROM @Foo) AS [Foo]
ON (1=0)
WHEN NOT MATCHED THEN
INSERT (CreatedTimeStamp) VALUES (CURRENT_TIMESTAMP)
OUTPUT INSERTED.RevId, Foo.FooId INTO @InsertedRows;
SELECT * FROM @Foo
SELECT * FROM @Revisions
SELECT * FROM @InsertedRows
Tablo sonuçları
@Foo table
+-------+----------+
| FooId | MyData |
+-------+----------+
| 1 | FooData1 |
| 2 | FooData2 |
| 3 | FooData3 |
+-------+----------+
@Revisions table
+-------+-------------------------+
| RevId | CreatedTimeStamp |
+-------+-------------------------+
| 100 | 2016-03-31 14:48:39.733 |
| 110 | 2016-03-31 14:48:39.733 |
| 120 | 2016-03-31 14:48:39.733 |
+-------+-------------------------+
@InsertedRows table
+-------+-------+
| RevId | FooId |
+-------+-------+
| 100 | 1 |
| 110 | 2 |
| 120 | 3 |
+-------+-------+
tam şema (kimlik sütunları/...) ve örnek verileri hazırlayın. http://sqlfiddle.com – lad2025