Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server删除超过10分钟的所有行_Sql_Sql Server - Fatal编程技术网

SQL Server删除超过10分钟的所有行

SQL Server删除超过10分钟的所有行,sql,sql-server,Sql,Sql Server,如何删除SQL Server中创建时间超过10分钟的所有行。 谢谢。SQL Server无法确定行是在什么时候创建的。您需要在表中有一个额外的列来记录时间。如果这样做,delete语句将变得相当直接。假设您有一个存储时间戳的列名Date\u列。您可以这样尝试,其中mi是minute的缩写: DELETE FROM Table_name WHERE Date_column < DATEADD(mi,-10,GETDATE()) 从表中删除\u名称 其中Date\u列

如何删除SQL Server中创建时间超过10分钟的所有行。
谢谢。

SQL Server无法确定行是在什么时候创建的。您需要在表中有一个额外的列来记录时间。如果这样做,delete语句将变得相当直接。

假设您有一个存储时间戳的列名Date\u列。您可以这样尝试,其中mi是minute的缩写:

DELETE FROM Table_name
WHERE Date_column < DATEADD(mi,-10,GETDATE())
从表中删除\u名称
其中Date\u列
在表中添加一行,该行保存创建日期
修改日期

创建更新此行的触发器

CREATE TRIGGER dbo.trigger_table_update

    ON dbo.MyTable AFTER UPDATE
    AS BEGIN
        UPDATE dbo.MyTable  SET modified = GETDATE()
             FROM INSERTED i
                  WHERE dbo.MyTable.ID = i.ID
    END
现在你可以删除了

DELETE FROM MyTable
WHERE modified  < DATEADD(mm,-10,GETDATE())
从MyTable中删除
其中修改

请查看

我之所以使用此语法,是因为我发现它很容易使用:

这确实需要有一列时间戳,这应该是任何生产系统的SOP

WHERE DATEDIFF(MINUTE, order.credat, CURRENT_TIMESTAMP) < 10
其中DATEDIFF(分钟,order.credat,当前时间戳)<10

让我猜猜:您的表中没有创建
列?我只是好奇:创建
列的时间从何而来?他错误地认为OP的表中有该列table@Trinimon:-我假设OP一定有一列来存储时间戳。@Rahul:非常乐观的假设-他真的会要求这个,如果他有的话?;)使用ORACLE,他本可以使用flashback表——或多或少是成功的……事实上,是的,我有这个专栏,这是我第一次,也可能是最后一次接触SQL:),这就是我问的原因