假设我有一个具有最后一次被更新或插入一列TIMEDATE数据库表.哪个更好:
触发器更新该字段.
让正在执行插入/更新的程序设置该字段.
第一种选择似乎是最容易的,因为我甚至不重新编译做到这一点,但是这不是一个真正的大问题.除此之外,我有麻烦的任何原因做了另一种思考.有什么建议?
第一个选项可以更强大,因为数据库将维护该字段.这伴随着使用触发器的可能开销.
如果将来可以通过他们自己的界面将其他应用程序写入此表,我会使用触发器,因此您不会在其他任何地方重复该逻辑.
如果您的应用程序非常多,或者任何其他应用程序将通过相同的数据层访问数据库,那么我将避免触发器可以诱导并将逻辑直接放入数据层(SQL,ORM,存储过程等)的噩梦. ).
当然,在任何一种情况下,您都必须确保您的时间源(您的应用程序,用户的PC,SQL服务器)是准确的.
关于为什么我不喜欢触发器:
也许我把他们称为噩梦是轻率的.像其他一切一样,它们适合适度.如果你将它们用于非常简单的事情,我可以加入.
当触发器代码变得复杂(并且昂贵)时触发器开始引起许多问题.它们是您执行的每个插入/更新/删除查询的隐藏税(取决于触发器的类型).如果该税可以接受,那么它们可以成为工作的正确工具.
您没有提到3.使用存储过程更新表.该过程可以根据需要设置时间戳.
也许这对你来说不可行,但我没有看到它提到.