Saya perlu mengubah batasan berikut agar tidak berlaku untuk AMOUNTS negatif. Apakah itu mungkin? Saya telah bermain-main dengan sintaks di SSMS untuk sementara waktu sekarang dan tidak menyukai apa pun yang saya buat.

ALTER TABLE Payments
ADD CONSTRAINT Unique_Payment_2021 UNIQUE (InvoiceID, Amount, TransDate, TransTime);

FYI, ini terjadi pada server SQL 2012.

Terima kasih Harry

0
Harry A 4 April 2021, 15:19

1 menjawab

Jawaban Terbaik

Batasan unik diimplementasikan menggunakan indeks unik. Anda bisa mendapatkan fungsi yang sama menggunakan indeks yang difilter:

create unique index unq_payment_2021 on
    payments(InvoiceID, Amount, TransDate, TransTime)
    where amount >= 0;

Satu perbedaan kecil adalah pesan kesalahan yang Anda dapatkan ketika kondisi dilanggar. Dalam satu kasus, ini mengacu pada batasan unik dan di kasus lain ke indeks unik.

Ini adalah biola db<>.

2
Gordon Linoff 4 April 2021, 13:23