Aracılığıyla paylaş


Bir görünümü kullanarak verileri değiştirme

UPDATE, INSERT ve DELETE deyimlerini kullanarak veya bir tablodaki veriyi değiştirirken aracılığıyla bir görünümü temel bir temel tablo, verileri aynı şekilde değiştirebileceğiniz Kullanımıbcp yardımcı programını ve BULK INSERT deyim.Aşağıdaki kısıtlamalar görünümlerini güncelleştirmek için geçerlidir, ancak tablolar için geçerli değildir:

Not

Bazı kısıtlamalar bölümlendirilmiş görünüm için geçerli değildir ve kısıtlamaları hiçbiri için ıNSTEAD OF tetikleri yoluyla uygulanan güncelleştirmeleri uygulayın.Daha fazla bilgi için bu konuda daha sonra "Diğer seçenekler için değiştirme verileri kullanarak bir görünüm") konusuna bakın.

  • UPDATE, INSERT ve DELETE deyimlerini dahil olmak üzere herhangi bir değişiklik, yalnızca temel tablodan sütun başvurmalıdır.

  • Görünümde değiştirilen sütunları tablo sütunları temel verilerde doğrudan başvurmalıdır.Bunlar tüm diğer şekilde gibi aracılığıyla türetilemez:

    • Bir toplamak işlev (ORTALAMA, BAĞ_DEĞ_SAY, Topla, MIN, en BÜYÜK, gruplandırma, STDSAPMA, STDSAPMAS, VAR ve VARP).

    • Hesaplama; sütun diğer sütunları kullanarak bir ifadeden hesaplanır.Sütunları kullanarak oluşturulmuş küme işleçleri (UNION, UNION ALL, CROSSJOIN, EXCEPT ve INTERSECT) için bir hesaplama tutarı ve ayrıca güncelleştirilebilir değil.

  • Değiştirilen sütunlar GROUP BY, HAVING veya DISTINCT yan tümceleri etkilenip etkilenmedikleri edemiyor.

  • TOP herhangi bir yerde kullanılamaz select_statement CHECK SEÇENEĞI, de belirtildiğinde görünümünü.

Herhangi bir alt sorgular görünümün FROM yan tümcesinde görünümüne uygularken önceki kısıtlamalar uygulanır.Genel olarak, SQL Server 2008 değişiklik izleme belirsizliğe yer bırakmadan görünüm tanımı için bir temel tablo arasında olmalıdır. Örneğin, aşağıdaki görünüm güncelleştirilmez:

CREATE VIEW TotalSalesContacts
AS
SELECT C.LastName, 
SUM(O.TotalDue) AS TotalSales
FROM Sales.SalesOrderHeader O, Person.Contact C
WHERE C.ContactID = O.ContactID
GROUP BY LastName

Yapılan BIR değişiklik LastName sütunu TotalSalesContacts sütun tarafından etkilenen için kabul edilemez, olacak bir GROUP BY yan tümce. Yoksa birden fazla örnek aynı son adı SQL Server Güncelleştirme, ekleme veya silme için hangisinin bilmez. Likewise, an attempt instead to modify the TotalSales column of TotalSalesContacts would return an error, because it is a column that is derived from an aggregate function.SQL Server cannot trace this column directly to its base table, SalesOrderHeader.

Aşağıdaki ek kurallar uygulanır:

  • Tüm veri değişikliği deyimleri karşı görüntüleyin, CHECK SEÇENEĞI, WITH yan tümce bir görünüm tanımında kullanılıyorsa, bu görünümü tanımlayan deyim içinde ayarlanan ölçütlere uygun olmalıdır.CHECK SEÇENEĞI, WITH yan tümce kullanılırsa, satır, onları görünümden kaybolmasına neden olan bir şekilde değiştirilemez.Bunun olmasını neden olabilecek herhangi bir değişiklik iptal edildi ve bir hata görüntülenir.

  • INSERT deyimleri, alttaki tabloda null değerlere izin vermek ve hiçbir VARSAYıLAN tanımları olan tüm sütunlar için değer belirtmeniz gerekir.

  • temel alınan tablo sütunlar değiştirilen veriler gibi null atanabilirlik, bu sütunlar, kısıtlamalar kısıtlamaları, DEFAULT tanımları vb. uygun olmalıdır.Örneğin, bir satır silinmişse, temel alınan tüm yabancı anahtar kısıtlamaları ilişkili tablolardaki yine de başarılı olması silme için sağlanmalıdır.

  • Dağıtılmış bir bölüm görünümü (uzaktan görüntüleme) bir anahtar kümesi temelli imleç kullanılarak güncelleştirilemez.Bu kısıtlama, alttaki tablo ve Görünüm kendisini imleç bildirerek çözülebilir.

  • Toplu bölümlendirilmiş görünüm veri alma tarafından desteklenmiyor Kullanımıbcp TOPLU INSERT veya INSERT... SELECT * FROM OPENROWSET(BULK...) deyimleri.Ancak, birden çok satır bölümlendirilmiş bir görünüme kullanarak ekleyebileceğiniz EKLEME ekstresi.Daha fazla bilgi için bkz:Toplu olarak verilirken verilerden veya toplu bir görünüm için veri alma.

  • READTEXT ve WRITETEXT ifadeleri birlikte kullanılamaz text, ntext, veya image Bir görünümdeki sütun.

Görünüm üzerinden veri değiştirmek için diğer seçenekleri

Daha önce bu konuda açıklanan kısıtlamalar , verileri doğrudan bir görünümü aracılığıyla değiştirmesini önlemek için aşağıdaki seçenekleri göz önünde bulundurun:

Veri görünümü üzerinden eklemek için

Veri Görünümü değiştirmek için

Veri görünümü silmek için

See Also

Concepts