2017-08-31 143 views
0

我在SQL Server中有两个日期 - [O/R COMPLETE DATE][O/R SHIP BY]。我想检查[O/R COMPLETE DATE]是否晚于[O/R SHIP BY],如果是,我想显示一条消息Overwrite shipBy date must be later than Overwrite Completed date使用SQL Server触发器打印消息

是否有可能?

+2

此时你想这样的消息?。我的意思是在插入或upadating记录?你能更详细地描述你的需求吗? –

+1

'当[O/R完成日期]> [O/R COMPLETE DATE]时选择案例'那么'覆盖shipBy日期必须晚于Overwite完成日期'ELSE NULL END AS Message'? – Siyual

+3

这感觉就像在与数据库交互的应用程序中应该做的事情,然后再将数据作为数据验证的一部分发送。不是数据库本身应该做的事情。 – JNevill

回答

1

这个怎么样?

CREATE TABLE OVERWRITE 
     (OVERWRITEID int 
     ,[O/R COMPLETE DATE] date 
     ,[O/R SHIP BY] date 
     ,[SHIP INSTRUCTIONS] AS 
      CASE WHEN [O/R COMPLETE DATE] > [O/R SHIP BY] 
       THEN 'Overwrite shipBy date must be later than Overwrite Completed date' 
       ELSE 
       'Overwrite shipBy date and Overwrite Completed dates are valid' 
      END 
     ) 


    INSERT INTO OVERWRITE 
    VALUES (1,'1/1/2017', '6/1/2017'), (2, '11/1/2017', '10/1/2017') 

    SELECT * 
    FROM OVERWRITE 

触发器不是为输出设计的;如前所述,建议客户端应用程序发送消息。数据库中的第一道防线数据是前端应用程序。

http://sqlfiddle.com/#!6/4f0d0/1