基本上,我试图比较用户将输入的日期,如果它大于今天的日期(GETDATE()),那么它会抛出错误并且不输入数据。查询会引发错误,但它仍会输入数据,结果位于底部。
USE EMR
GO
IF EXISTS (SELECT DB_ID('CheckDate'))
DROP TRIGGER CheckDate
GO
CREATE TRIGGER CheckDate
ON VISIT
AFTER INSERT, UPDATE
AS
BEGIN TRAN
DECLARE @ErrorMessage VARCHAR(200)
DECLARE @Date VARCHAR(20) = CAST ((SELECT CONVERT (DATE, GETDATE())) AS VARCHAR(20))
SET @ErrorMessage = 'Date Must Be On Or Before ' + @Date + '';
DECLARE @CheckDate DATE = (SELECT Date_Of_Service FROM inserted);
IF CAST((@CheckDate) AS DATE) <= CAST(GETDATE() AS DATE)
COMMIT TRAN
ELSE
RAISERROR(@ErrorMessage, 1, 1)
这是我的插入语句:
INSERT INTO VISIT (PK_VISIT_ID, Date_Of_Service)
VALUES (02913, '2018-12-03')
得到这个:
Date Must Be On Or Before 2016-02-17
Msg 50000, Level 1, State 1
(1 row(s) affected)