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

Referensi sendiri batasan kunci asing dan hapus

Tidak seperti Andomar, saya akan senang menggunakan pemicu - tetapi saya tidak akan menghapus pemeriksaan kendala. Jika Anda menerapkannya sebagai instead of pemicu, Anda dapat mengatur ulang baris lain ke nol sebelum melakukan penghapusan yang sebenarnya:

CREATE TRIGGER T_tabData_D
on tabData
instead of delete
as
    set nocount on
    update tabData set fiData = null where fiData in (select idData from deleted)
    delete from tabData where idData in (select idData from deleted)

Singkat, ringkas, tidak perlu jika SQL Server dapat menangani kaskade kunci asing ke tabel yang sama (di RDBMS lain, Anda mungkin dapat menentukan ON DELETE SET NULL untuk batasan kunci asing, YMMV).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mendapatkan Kuartal kalender dari tanggal di TSQL

  2. Tabel Daftar SQL Server:Cara Menampilkan Semua Tabel

  3. SQL-Server:Error - Akses eksklusif tidak dapat diperoleh karena database sedang digunakan

  4. Kesalahan overflow aritmatika saat mengonversi ekspresi ke tipe data datetime

  5. Bagaimana cara melewatkan daftar sebagai parameter dalam prosedur tersimpan?