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,则执行截断的主要内容,如果未能解决你的问题,请参考以下文章
如果 TO_CHAR(SYSDATE,'DD')='01' 在 SQL 中截断整个表