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

SQL Server 2012 CHECK constraint tidak diaktifkan pada pernyataan UPDATE atau DELETE

Kami dapat memaksa pemeriksaan pembaruan dengan cara ini.
Misalkan Anda memiliki tabel seperti ini

create table UserTest(Id int, IsEnabled bit, [GroupId] int)

Sekarang, kami ingin memeriksa hanya 1 pengguna yang diaktifkan dengan [GroupId] .

Biasanya kendala akan terlihat seperti

ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled  CHECK (dbo.checkOnlyOne(GroupId)=1)

Batasan ini tidak akan dipicu selama catatan telah diperbarui sampai Anda memperbarui GroupId .
Jadi, kita harus memaksakan batasan untuk memvalidasi kolom IsEnabled dengan melakukan

ALTER TABLE [dbo].[UserTest] ADD CONSTRAINT CHK_OnlyOneEnabled  CHECK (dbo.checkOnlyOne(GroupId, IsEnabled )=1)

Tidak masalah jika Anda menggunakan atau tidak nilai IsEnabled ke dalam fungsi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL GUID Vs Integer

  2. Gabung karakter menggunakan SET BERBASIS PENDEKATAN (Sql Server 2005)

  3. SQL untuk mendapatkan nilai bukan nol berikutnya di kolom

  4. Pengkodean Ibrani di sql server2005

  5. Maks dalam jangka waktu dengan duplikat tanggal