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

Batasan yang Dapat Ditangguhkan di SQL Server

OT:Ada beberapa hal IMHO yang tidak didukung SQL Server, tetapi masuk akal di lingkungan perusahaan:

  • Batasan yang dapat ditangguhkan seperti yang disebutkan di sini
  • MARS:Mengapa Anda perlu menetapkan opsi untuk sesuatu yang sepenuhnya alami?
  • Batasan CASCADE DELETE:SQL Server hanya mengizinkan satu jalur kaskade tunggal untuk batasan CASCADE DELETE yang diberikan. Sekali lagi, saya tidak melihat alasan mengapa itu tidak boleh dibiarkan mengalir pada penghapusan melalui beberapa jalur yang mungkin:Pada akhirnya, pada saat itu benar-benar dijalankan, hanya akan selalu ada satu jalur yang benar-benar digunakan, jadi mengapa apakah ini pembatasan?
  • Pencegahan transaksi paralel pada satu koneksi ADO.NET.
  • Memaksa setiap perintah yang dieksekusi pada koneksi yang memiliki transaksi untuk dieksekusi dalam transaksi ini.
  • Saat membuat indeks UNIK, NULL diperlakukan seolah-olah itu adalah nilai sebenarnya, dan hanya boleh muncul sekali dalam indeks. Namun, gagasan SQL tentang NULL sebagai "nilai tidak diketahui" akan menunjukkan, bahwa nilai NULL diabaikan sama sekali saat membuat indeks...

Semua hal kecil ini membuat banyak integritas referensial dan fitur transaksional yang Anda harapkan dari RDBMS berukuran penuh hampir tidak berguna di SQL Server. Misalnya, karena batasan yang dapat ditangguhkan tidak didukung, gagasan tentang "transaksi" sebagai Unit Kerja yang konsisten secara eksternal sebagian dinegasikan, satu-satunya solusi yang layak - kecuali dari beberapa solusi kotor - adalah tidak mendefinisikan batasan integritas referensial sama sekali. Saya berharap, perilaku alami dari suatu transaksi adalah Anda dapat bekerja di dalamnya dengan cara dan urutan operasi yang Anda suka, dan sistem akan memastikannya konsisten pada saat Anda melakukan itu. Masalah serupa muncul dari pembatasan, bahwa batasan integritas referensial dengan ON DELETE CASCADE hanya dapat didefinisikan sedemikian rupa sehingga hanya satu batasan tunggal yang dapat menyebabkan penghapusan objek secara berjenjang. Ini benar-benar tidak cocok dengan sebagian besar skenario dunia nyata.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan kueri berkinerja terburuk di SQL Server 2008?

  2. Pengaruh petunjuk NOLOCK dalam pernyataan SELECT

  3. Perbaiki "Konversi gagal saat mengonversi nilai varchar" Saat Mencoba Menggabungkan di SQL Server

  4. Cara Membuat Pernyataan Kolom Tambah untuk semua tabel dalam Database di SQL Server - Tutorial SQL Server / T-SQL Part 49

  5. Apakah ada LastIndexOf di SQL Server?