【问题标题】:Idea's to Create a table dynamically动态创建表的想法
【发布时间】:2013-05-02 12:00:37
【问题描述】:

是否可以在 SQL 中动态创建表。在我的 Web 应用程序中,我需要将今年(即 2013 年)的数据存储在名为 "INFO_2013" 的表中。当系统日期更改为 2014 年时,必须创建一个新表为“INFO_2014”,并且必须在该表中添加值。

注意:表也必须在同一个数据库中。

【问题讨论】:

    标签: asp.net sql sql-server sql-server-2008 dynamic-tables


    【解决方案1】:

    我会避免使用这种方法。

    为什么不创建一个带有YEAR 列的表,它可以识别它来自哪一年?

    此外,如果您担心桌子变大,您可能想看看Creating Partitioned Tables and Indexes

    也可以看看这些

    Index Basics

    Types of Indexes

    【讨论】:

    • 你@astander!这是一个更好的方法。但主要是我需要每天插入 50 条记录……在这种情况下,我必须在 1 个月内更新近 1500 条记录。 1年会发生什么。如果我将价值存储近 5 年,那会发生什么???这就是为什么我正在寻找解决方案....
    • 它可能更简单。如果表格有任何日期或日期时间字段,它们可用于确定年份。
    • @Elango_Thanumalayan,您正在描述一个非常小的数据库。另外,无论您有多少张表,它的记录数都是相同的。 asstander 的方法让生活比您想象的要容易得多。
    • 一年 18,250 条记录确实非常少。即使您查看 10 年的数据,一个简单的索引就足够了。
    • Thankx @astander 我真的在寻找您提供的参考资料。我很快就会回来。无论如何感谢您的支持。
    【解决方案2】:

    试试这个:

    DECLARE @sql NVARCHAR(2000) 
    DECLARE @table NVARCHAR(100)
    
    SET @table = 'INFO_2013'
    
    SET @sql = N'CREATE TABLE '+@table+'
    (
    RollNumber INT
    ,Name VARCHAR(50)
    )'
    
    EXECUTE SP_EXECUTESQL @sql 
    

    【讨论】:

    • 虽然这个答案满足了 OP 的问题,但 astander's answer 是更好的做法。
    • @Anu,你能解释一下这些问题吗?
    • 这很简单,我用 Create table 命令创建了字符串,然后我执行了它。告诉我,你在哪一部分有疑问。谢谢。
    • @Anu,Declare SQL 是什么,Declare table 给出...?它有什么用? (请通过@my_name 通知我)
    • @Elango_Thanumalayan,这不是表格,这是保存字符串的简单变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 2012-05-03
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多