Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Kích hoạt để ngăn Chèn cho dữ liệu trùng lặp của hai cột

Một cái gì đó như thế này:

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

Đó chỉ là để chèn, bạn cũng có thể muốn xem xét các bản cập nhật.

Cập nhật

Một cách đơn giản hơn là chỉ cần tạo một ràng buộc duy nhất trên bảng, điều này cũng sẽ thực thi nó cho các bản cập nhật và loại bỏ sự cần thiết của trình kích hoạt. Chỉ cần làm:

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

và sau đó bạn sẽ kinh doanh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khi hiệu suất của Distinction và Group By khác nhau?

  2. Cài đặt Azure Data Studio trên Ubuntu 18.04

  3. Ví dụ về ROUND () trong SQL Server

  4. Các tùy chọn giám sát cơ sở dữ liệu hàng đầu có sẵn cho doanh nghiệp của bạn

  5. Có gì mới trong SQL Server 2019?