【发布时间】:2016-05-30 03:52:24
【问题描述】:
基本上,我试图比较用户将输入的日期,如果它大于今天的日期 (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)
【问题讨论】:
-
为什么不给
THROW一个错误呢?
标签: sql sql-server throw raiserror