Aracılığıyla paylaş


Bir görünüm üzerinden veri değiştirme

Bir temel verileri değiştirebilirsiniz temel tablo bir görünümü, aynı şekilde bir tablodaki verileri kullanarak veya update, INSERT ve delete deyimlerini kullanarak değiştirmek bcp yardımcı programı ve bulk INSERT deyim.Aşağıdaki kısıtlamalar görünümlerini güncelleştirme için geçerlidir, ancak, tablolar için geçerli değildir:

Not

Bazı kısıtlamalar bölümlenmiş görünümler için geçerli değildir ve hiç bir kısıtlama aracılığıyla INSTEAD OF tetikleyicileri uygulanan güncelleştirmeleri uygulanır.Daha fazla bilgi için bkz: "Diğer seçenekleri değiştirme veri üzerinden bir görünümü" Bu konuda daha sonra.

  • update, INSERT ve delete deyimlerini dahil olmak üzere herhangi bir değişiklik sütun yalnızca bir başvuru temel tablo.

  • Görünümde değiştirilen sütunları tablo sütunları temel verileri doğrudan bulunmanız gerekir.Bunlar herhangi başka bir şekilde gibi aracılığıyla türetilemez:

    • Bir toplu işlev (avg, count, TOPLA, MIN, max, GRUPLANDIRMA, STDSAPMA, STDSAPMAS, var ve VARS).

    • Bir hesaplama; sütunu hesaplanan edilemez bir ifade diğer sütunları kullanarak.Sütunları küme işleçleri kullanarak (UNION, UNION all, CROSSJOIN, DIŞINDAKİLER ve INTERSECT) tutarı için bir hesaplama ve de güncelleştirilebilir.

  • Değiştirilmekte sütunlar group by, HAVING veya DISTINCT yan tümceleri tarafından etkilenmez.

  • ÜST kullanılamaz herhangi bir yerde de select_statement DENETLEME seçeneği ile de belirtildiğinde görünümün.

Görünümüne uygularken önceki görünümün, from yan tümce tümce tümcesinde herhangi bir alt sorgular için sınırlamalar.Genel olarak, SQL Server için view definition belirsizliğe yer bırakmadan izleme değişiklikleri mümkün olmalıdırbir temel tablo. Örneğin, aşağıdaki görünüm güncelleştirilmez:

USE AdventureWorks2008R2;
GO
CREATE VIEW Sales.TotalSalesContacts
AS
    SELECT p.LastName, 
           SUM(o.TotalDue) AS TotalSales
    FROM Sales.SalesOrderHeader AS o, Person.Person AS p
    WHERE p.BusinessEntityID = o.CustomerID
    GROUP BY LastName;

Yapılan bir değişiklik LastName sütunu TotalSalesContacts sütun tarafından etkilenen çünkü edilemez bir GROUP BY yan tümce tümce tümce.Birden fazla örnek aynı Soyadı ise SQL Server bilemez güncelleştir, Ekle, hangisinin veya silme.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:

  • Görünüm karşı yürütülen tüm veri değişikliği deyimleri ölçütlere uyması gerekir küme check OPTION ile yan tümce tümce görünüm tanımında kullanılıyorsa, Görünüm tanımlama deyim içinde.DENETLEME seçeneği ile yan tümce tümce 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 deiiklik iptal edilir ve bir hata görüntülenir.

  • INSERT deyimleri temel sütun için değerler belirtmeniz gerekir temel alınan tablo , değil null değerlere izin vermek ve hiçbir varsayılan tanımları vardır.

  • Arka plandaki içindeki sütunlardaki değiştirilen verileri temel alınan tablo gibi verilebilirliğini, bu sütunlar, kısıtlamalar kısıtlamalar, varsayılan tanımları ve benzeri kalmalıdır.Örneğin, satır silinirse, tüm temel yabancı anahtar kısıtlamaları ilişkili tablolardaki hala silme işleminin başarılı olması karşılanmalıdır.

  • Bir dağıtılmış bölüm görünümü (uzaktan) kullanarak bir anahtar kümesi temelli imleç güncelleştirilemiyor.Bu kısıtlama bildirerek çözülebilir imleç temel tablolarda ve görünümü üzerinde değil.

  • Bölümlenmiş bir görünüm veri alma toplu tarafından desteklenmeyen bcp veya bulk INSERT ve Ekle...SEÇİN * ndan openrowset(bulk...) ifadeleri.Ancak, birden çok satır bölümlenmiş bir görünüm kullanarak ekleyebileceğiniz Ekle deyim.Daha fazla bilgi için bkz: Toplu bir görünüme verilerden veya toplu alma veri verme.

  • readtext ve WRITETEXT deyimi kullanılamaz text, ntext, veya image sütunlar halinde görünümü.

Bir görünüm üzerinden veri değiştirmek için diğer seçenekler

Bu konuda daha önce açıklanan kısıtlamalar veri görünümü doğrudan aracılığıyla değiştirmesini önlemek için aşağıdaki seçenekleri dikkate alın:

Bir görünüm üzerinden veri eklemek için

Bir görünüm üzerinden veri değiştirmek için

Bir görünüm üzerinden veri silmek için

Ayrıca bkz.

Kavramlar