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

Pemicu untuk mencegah Penyisipan untuk data duplikat dari dua kolom

Sesuatu seperti ini:

CREATE TRIGGER MyTrigger ON dbo.MyTable
AFTER INSERT
AS

if exists ( select * from table t 
    inner join inserted i on i.name=t.name and i.date=t.date and i.id <> t.id)
begin
    rollback
    RAISERROR ('Duplicate Data', 16, 1);
end
go

Itu hanya untuk disisipkan, Anda mungkin ingin mempertimbangkan pembaruan juga.

Perbarui

Cara yang lebih sederhana adalah dengan membuat batasan unik di atas tabel, ini juga akan memberlakukannya untuk pembaruan juga dan menghilangkan kebutuhan akan pemicu. Lakukan saja:

ALTER TABLE [dbo].[TableName]    
ADD CONSTRAINT [UQ_ID_Name_Date] UNIQUE NONCLUSTERED
(
    [Name], [Date]
)

dan kemudian Anda akan berbisnis.



  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 cara menjatuhkan kolom dengan kendala?

  2. 3 Cara Mengembalikan Semua Tabel TANPA Kunci Utama di SQL Server

  3. Buat Prosedur Tersimpan di SQL Server 2017

  4. SQL Server:Kolom indeks digunakan seperti?

  5. Kesalahan:Pernyataan INSERT EXEC tidak dapat disarangkan. dan Tidak dapat menggunakan pernyataan ROLLBACK dalam pernyataan INSERT-EXEC. Bagaimana cara mengatasi ini?