Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tidak dapat melakukan penghapusan pada View SQL Server 2005

Oke, bayangkan satu contoh di mana kesalahan ini akan terjadi (karena Anda belum menunjukkan definisi tampilan Anda).

Mari kita asumsikan kita memiliki pandangan:

CREATE VIEW dbo.V1
with schemabinding
as
    select 'T1' as TabName,T1ID as ID,ImportantDate from dbo.T1
    union all
    select 'T2',T2ID,ImportantDate from dbo.T2

apakah kita sekarang mencoba:

DELETE from dbo.V1 where ImportantDate < DATEADD(day,-90,CURRENT_TIMESTAMP)

kami akan mendapatkan kesalahan yang Anda tunjukkan (atau serupa). Jadi yang kita butuhkan adalah pemicunya:

CREATE TRIGGER T_V1_D
on dbo.V1
instead of delete
as
    set nocount on
    delete from dbo.T1 where T1ID in (select ID from deleted where TabName = 'T1')
    delete from dbo.T2 where T2ID in (select ID from deleted where TabName = 'T2')

Pemicu ini menjadi jauh lebih rumit untuk ditulis jika tidak ada cara mudah untuk menghubungkan baris dari deleted psuedo-table dengan baris mana yang perlu dihapus dari setiap tabel dasar.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alih-alih NULL, bagaimana cara menampilkan `0` dalam hasil dengan pernyataan SELECT sql?

  2. Menggunakan INNER JOIN untuk Menggabungkan Tabel SQL Server dan Menampilkannya di ASP.NET Webforms

  3. Tidak dapat masuk menggunakan otentikasi SQL HANYA dari server jauh

  4. Pemulihan cadangan database SQL Server pada versi yang lebih rendah

  5. Bagaimana cara menambahkan Nomor Baris di SQL Server Management Studio ( SSMS) - Tutorial SQL Server / TSQL Bagian 11