Я работаю с базой данных, и мне нужно проверить некоторые столбцы в схеме платежей.
Например, если кредитная карта не используется для платежей, CreditCardNumber, CardHoldersName и CreditCardExpDate должны иметь значение NULL.Если используется кредитная карта, значение CreditCardExpDate должно быть больше, чем PaymentDate PaymentDue может разрешить NULL, но не должно быть больше, чем PaymentAmount
Я искал в Интернете, но получаю сложные триггеры и процедуры, которые недействительно полезно.
create table Payment.Payments(
Payment_ID int identity (200, 21),
Payment_Amount money constraint chk_Payment_Amount check (Payment_Amount >
'0'),
Payment_Date date, -- is to be greater than the end date which is on another table
Credit_Card_Number int,
Card_Holders_Name char (50),
Credit_Card_Expiry_Date date,
Project_ID int Foreign Key references ProjectDetails.Projects(Project_ID),
Payment_Due money -- should not be greater than Payment Amount but
can still accept null*
);
В примечаниях показана текущая проблема с проверкой, которая у меня есть.
Я создал триггер для payment_date, но я могу его активировать только тогда, когда вставлена датабольше текущей даты, мне нужно его запустить, если она меньше конечной даты (конечная дата находится в другой таблице)
CREATE TRIGGER paymentdate ON Payment.Payments FOR INSERT AS DECLARE @ModifiedDate date SELECT @ModifiedDate= Payment_Date FROM Inserted IF (@ModifiedDate> getdate ()) BEGIN PRINT 'Дата изменения должна быть текущей датой.Следовательно, не может вставить.КОНЕЦ ТРАНЗАКЦИИ ROLLBACK