创建系统日志表的存储过程(CreateSystemLogTable)

本文介绍了一个存储过程,用于自动检查并创建指定年份每个月的系统日志表,确保日志数据按月存储。该过程使用SQL Server的元数据查询功能来确认表是否存在,并在缺失时创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-- ==============================================================
--
 类型:    存储过程
--
 名称:    CreateSystemLogTable
--
 参数:    无
--
 作者:    Dicky
--
 日期:    2009-1-8 9:48
--
 描述:    检查当前年中1-12月的系统日志表是否存在,不存在则创建,
--
            表名称如System_log_20091...System_log_200912。
--
 ==============================================================
CREATE PROCEDURE [CreateSystemLogTable] 
AS
BEGIN
    
DECLARE @tableName NVARCHAR(50)
    
DECLARE @createSql NVARCHAR(500)
    
DECLARE @i INT
    
SET @i = 1
    
WHILE @i <= 12 /*循环1-12个月*/
    
BEGIN
        
SET @tableName = 'System_log_' + LTRIM(YEAR(GETDATE())) + LTRIM(@i)
        
IF NOT EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[' + @tableName + ']'AND OBJECTPROPERTY(id, N'IsUserTable'= 1)
            
BEGIN
                
SET @createSql = '
                    CREATE TABLE [
' + @tableName + '] (
                        [id] [int] IDENTITY (1, 1) NOT NULL ,
                        [userid] [int] NULL ,
                        [type] [nvarchar] (50) NULL ,
                        [context] [nvarchar] (50) NULL ,
                        [ip] [nvarchar] (50) NULL ,
                        [createDate] [nvarchar] (50) NULL 
                    ) ON [PRIMARY]

                    ALTER TABLE [
' + @tableName + '] ADD 
                        CONSTRAINT [DF_
' + @tableName + '_createDate] DEFAULT (GETDATE()) FOR [createDate]'
                
EXEC(@createSql)
            
END
        
SET @i = @i + 1
    
End
END

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值