我正在为学校工作创建一个数据库,而我在做一件我想做的事情上遇到了麻烦。
我正在研究一个真实的案例,所以我在关系中有 EndDate , StartDate 和持续时间这些属性,而且我有为持续时间创建触发器。但是,首先我需要计算它。它是来自 StartDate 和 EndDate 的衍生属性,但我不知道如何做到这一点。
我一直在检查程序和函数来执行它(我认为它必须是一个过程,以便SQL在插入元组时计算它)。我一直在尝试使用DATEDIFF
,但我真的不知道如何使用现有属性。任何人都可以帮助我吗?
答案 0 :(得分:0)
我认为您应该更深入地了解DecoderReloaded对您帖子的评论。
您可以在查询开始时执行INSTEAD OF trigger以保留列,并在结束时将AFTER触发器保留在另一列中。
示例:
CREATE TRIGGER TriggerInsteadOf
ON YourTable
INSTEAD OF INSERT, UPDATE
--You should repeat your queries here (as always needed with INSTEAD OF triggers) and set the datetime column value for the start time.
GO
CREATE TRIGGER TriggerAfter
ON YourTable
AFTER INSERT
--Don't need to repeat your queries here (as always happen with AFTER triggers) and set the datetime column value for the end time, or a DATEDIFF() to obtain the timespan.
GO
注意多次更新,您也可以考虑使用DELETE命令,具体取决于您想要实现的目标。
这不是最终的想法,但如果实施它将会很好。祝你好运。