首页 > 解决方案 > 是否可以在 SQL Server 中自动增加数据类型“time(7)”?

问题描述

目前我有一个表,其中包含一行“时间”,其数据类型为“时间(7)”。我已经为 05:00:00 设置了默认值,因为那是我希望开始时间的地方。对于表格中输入的每个数据,时间必须“增加” 2 分钟。我想知道是否有任何方法可以自动增加它,所以它会自动将时间增加 2 分钟?

我试图研究 Microsoft SQL Server Management Studio(我使用的)中的一些功能,但如果可能的话,还没有真正找到一种自动递增它的方法。

标签: sqlsql-server

解决方案


  1. 创建一个在插入时更新插入值的触发器
  2. 获取上一个条目并将 2 分钟添加到新行

例子:

Create TRIGGER updatetime
ON dbo.TimeTable
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @NewTime time

    SELECT Top 1 @NewTime = DATEADD(MINUTE, 2,tbl.tmt_time)
    FROM (
        SELECT TOP 2 *
        FROM [dbo].[TimeTable]
        ORDER BY tmt_Id DESC) as tbl
    ORDER BY tmt_ID ASC


    UPDATE tm
    SET tmt_time = @NewTime
    FROM [dbo].[TimeTable] tm
        INNER JOIN inserted i ON i.tmt_ID = tm.tmt_ID

END
GO

您也可以使用滞后而不是前 1 前 2 选择。此查询还会将 2 分钟添加到您的第一个条目。因此,您可能希望使用默认值播种第一行。

参考:

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql https://docs.microsoft.com/en-us/sql/t-sql/functions /lag-transact-sql https://docs.microsoft.com/en-us/sql/t-sql/queries/update-transact-sql


推荐阅读