MS SQL:如果记录数超过 N,则执行截断

Posted

技术标签:

【中文标题】MS SQL:如果记录数超过 N,则执行截断【英文标题】:MS SQL: Execute truncate if record count over N 【发布时间】:2014-03-21 16:57:01 【问题描述】:

我有一个表,它是从另一个数据库中提取的提要。由于提要关闭,源数据库表经常没有被填充。我想做的只是对源数据库表中的记录数进行计数,以确保在提取数据馈送之前填充它们,因为在这种情况下,过时的数据比所有丢失的数据要好。我已经在其他数据库中执行过此操作,但不确定如何在 Microsoft SQL 2008 中执行此操作。

这是我试图开始工作的模型,最终将被放入预定的过程中:

CASE 
    WHEN 
        (SELECT COUNT(PC.id) FROM [server08].[db01].[dbo].[tblesrc01] PC) > 9000 
    THEN
        TRUNCATE TABLE DartDB.dbo.assets_feed;
        INSERT INTO tbl_feed
        (
                id,name,amt,row_updated
        )
        SELECT 
              Q.PK_ID AS id
            , Q.fullname AS name
            , Q.cost  AS amt
            , SYSDATETIME() AS row_updated

        FROM [server08].[db01].[dbo].[tblesrc01] Q;
    ELSE 
END

大小写是否不适合此目的,还是我遗漏了什么?

【问题讨论】:

您可以使用IF 来完成此操作,例如IF (Condition) BEGIN TRUNC .... END 【参考方案1】:

在 SQL Server 中,您可以使用 IF... ELSE 构造在存储过程中执行此操作。 这是解释如何使用构造的MSDN documentation...

你的过程应该是这样的

IF ((SELECT COUNT(PC.id) FROM [server08].[db01].[dbo].[tblesrc01] PC) > 9000) 
    BEGIN
        TRUNC ... 
        INSERT ...
    END

【讨论】:

以上是关于MS SQL:如果记录数超过 N,则执行截断的主要内容,如果未能解决你的问题,请参考以下文章

截断日期时间超过 n 天的表

sql server 2000 中文字符串被截断是怎么回事

带有 MS SQL 的 Python - 截断的输出

如果 TO_CHAR(SYSDATE,'DD')='01' 在 SQL 中截断整个表

带有“返回记录:否”的 MS Access 直通查询截断 ODBC 连接字符串

Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”