Tablo değeri Oluşturucu (Transact-SQL)
Olarak oluşturulması için satır değeri ifadeleri kümesi belirtir bir tablo.The Transact-SQL table value constructor allows multiple rows of data to be specified in a single DML statement.Kullanarak INSERT deyiminde, VALUES yan tümcesindeki Tablo değeri kurucu belirtilebilir<Kaynak tablosu>birleştirme deyim ve tanımı, FROM yan tümce. türetilen tablonun yan tümce
VALUES ( <row value expression list> ) [ ,...n ]
<row value expression list> ::=
{<row value expression> } [ ,...n ]
<row value expression> ::=
{ DEFAULT | NULL | expression }
Bağımsız değişkenler
VALUES
Satır değeri ifade listesi sunar.Her liste parantez içine alınmış olmalı ve virgülle ayrılmış.Her listede belirtilen değerlerin sayısı aynı olmalıdır ve değerlerin sütunlarda aynı sırada olmalıdır tablo.Tablodaki her sütun için bir değer belirtilmiş olması gerekir veya sütun listesinden gelen her değer için sütunları açıkça belirtmeniz gerekir.
Varsayılan
ZorlarDatabase Engineekleme varsayılan değeri tanımlanmış bir sütun.Boş sütun için varsayılan değer yok ve sütun null değerlere izin verir, eklenir.Varsayılan kimlik sütun için geçerli değil.Tablo değeri oluşturucu içinde belirtilen, varsayılan bir INSERT deyim yalnızca izin verilir.expression
Bir sabit, değişken veya ifade belirtilir.yürütmek ifade ifade içeremez.
Kısıtlamaları ve sınırlamaları
Tablo değeri yapıcısını kullanarak oluşturulmuş bir satır sayısı 1000'dir.1000'den fazla eklemek için satırlar birden fazla INSERT deyimleri oluşturabilir veya toplu olarak veri almaKullanımıbcp ya da BULK INSERT deyim. yardımcı programı
skaler değerler yalnızca tek bir satır izin verilen değer ifadesi.Birden çok sütun içeren bir alt sorgu bir satır değeri ifade olarak kullanılamaz.Örneğin, aşağıdaki kod sonuçlar üçüncü satır değeri için ifade listesi bir sözdiziminde birden çok sütun içeren bir alt sorgu hata içeriyor.
Ancak, deyim alt sorgu her sütun ayrı ayrı belirterek yeniden.Aşağıdaki örnek, üç satır içine başarıyla eklerMyProductsTablo.
Veri Türleri
Multi-row bir INSERT içinde belirtilen değerlere deyim UNION ALL sözdizimi veri türü dönüştürme özelliklerini uygulayın.Bunun sonucunda eşleşmeyen türlerinden daha yüksek türüne örtük dönüştürmeönceliği.Dönüştürme desteklenen bir örtük dönüştürme değilse, hata oluşur.Örneğin, aşağıdaki deyim türünde bir sütuna bir tamsayı ve karakter değeri eklerchar.
CREATE TABLE dbo.t (a int, b char);
GO
INSERT INTO dbo.t VALUES (1,'a'), (2, 1);
GO
, INSERT deyim çalıştırdığınızda,SQL Serverdönüştürmek çalışır 'a' bir tamsayıya öncelik veri türü için bir tamsayı daha yüksek bir tür karakteri. olduğunu gösterirDönüştürme başarısız olur ve bir hata döndürdü.Hata değerleri uygun olarak açıkça dönüştürerek önleyebilirsiniz.Örneğin, önceki deyim aşağıdaki gibi yazılabilir.
INSERT INTO dbo.t VALUES (1,'a'), (2, CONVERT(CHAR,1));
Örnekler
C.Birden çok veri satırı ekleme
Aşağıdaki örnek tabloyu oluştururdbo.Departmentsve sonra Tablo değeri kurucu tablo. beş satır eklemek için kullanır.Tüm sütunlar için değer verilir ve tablodaki sütun aynı sırada listelenen sütun adlarını sütun listesinden belirtilmesi gerekmez.
B.DEFAULT ve NULL değerler içeren birden çok satır ekleme
Aşağıdaki örnek, bir tabloya satır eklemek için Tablo değeri Oluşturucu kullanarak belirten varsayılan ve NULL gösterir.
C.Türetilmiş bir FROM tablo olarak birden çok değer belirterek yan tümce
Aşağıdaki örnek, deyim. FROM yan tümcesinde birden çok değer belirtmek için Tablo değeri kurucu kullanır
SELECT a, b FROM (VALUES (1, 2), (3, 4), (5, 6), (7, 8), (9, 10) ) AS MyTable(a, b);
GO
D.Birleştirme deyimindeki türetilmiş kaynak tablo olarak birden çok değer belirtme
Değiştirmek için birleştirme aşağıdaki örnekte kullananSalesReasonTablo güncelleştirme veya ekleme satırı., DeğeriNewNameveri kaynağında tabloyu bir değere uyanNamehedef tablonun sütun ( SalesReason),ReasonTypesütun güncelleştirildiği hedef tablo., DeğeriNewNamemu değil eşleme, kaynak satır eklendiğinde hedef tablo.Kaynak tablo kullanan bir türetilmiş tablodurTransact-SQLTablo değeri Oluşturucu için birden çok satır kaynak tablosu.