【问题标题】:Microsoft SQL Compact Edition rename columnMicrosoft SQL Compact Edition 重命名列
【发布时间】:2011-04-27 09:51:48
【问题描述】:

我在重命名 SQL Server Compact Edition 中的列时遇到问题。我知道您可以使用sp_rename 重命名表,但这不适用于列。

我已经寻找替代方案,但没有找到。

我可以删除一列,然后在特定列之后添加一个新列吗?如果我删除该列并在指定的列之后添加它,数据会丢失吗?

似乎一旦创建了表就无法正确修改 - 这是 SQLCE 的另一个限制吗?

【问题讨论】:

    标签: sql database-design sql-server-ce rename ssms


    【解决方案1】:

    SQL CE 似乎确实不允许更改列名。

    您在创建新列并删除旧列方面走在正确的轨道上。

    如果您只是添加一列并删除旧列,您将丢失数据,因此您需要发出更新语句将数据从旧列转移到新列。

    类似的东西

    alter Table [dbo].[yourTable] add [newColumn] [DataType]
    
    update yourTable set newColumn = oldColumn
    
    alter Table [dbo].[yourTable] drop column [oldColumn]
    

    应创建新列,将数据从旧列复制到新列,然后删除旧列。

    希望对你有帮助!

    【讨论】:

    • 这可能可行,但新添加的列将是表中的最后一列,我不希望这样。有 after 所以你可以在指定的列之后添加,但它在 CE 中不起作用。之后找不到关键字。这是我的查询:“ALTER TABLE Inverters ADD COLUMN NewC int after Product”,这是错误:“解析查询时出错。[Token line number = 2,Token line offset = 21,Token in error = after] "。
    • CE 中的更改表似乎缺少从这里查看的功能msdn.microsoft.com/en-us/library/ms174123.aspx 缺少这个我不确定您如何在不重新创建表的情况下保留当前订单。就我个人而言,我不会过分担心这一点,因为无论如何我的 select 语句都会指定列顺序。
    • 完美解决方案(除非列是索引的一部分)。记住第一个命令的数据类型,否则脚本会失败/失败/成功...
    • 我必须添加 [newColumn] 数据类型,例如[HandlebarsTemplate] ntext 可以正常工作,否则感谢 99.999% 的回答!
    • @ColinWiseman 感谢您的推动,我可能应该在 9 年前首次指出时更新答案。现在更新 - 迟到总比没有好
    【解决方案2】:

    sp_rename 也适用于列:

    EXEC sp_rename
    objname = '< Table Name.Old Column Name >',
    @newname = '<New Column Name>',
    @objtype = 'COLUMN'  
    

    例子:

    SP_RENAME 'MyTable.[MyOldColumnName]' , '[MyNewColumnName]', 'COLUMN'  
    



    更新:实际上,sp_rename 过程在 SQL CE 中不可用!您可以在http://www.bigresource.com/Tracker/Track-ms_sql-4Tvoiom3/ 找到解决方案

    【讨论】:

    • 您确定它也适用于精简版吗?在发布此问题之前我已经尝试过,并且我已经使用您的示例进行了尝试,但它不起作用。这是我得到的:该过程的指定参数值无效。 [ 参数 # = 3,过程名称(如果已知) = sp_rename ]
    • 你是对的。对不起。似乎 sp_rename 在 SQLCE 中不可用。更新我的答案...
    • 我仍然可以在 MS Compact Edition 2008 中成功使用 EXEC sp_rename 'demo', 'pets' 来重命名表。但是重命名列失败了。
    • @Kamyar,您添加的链接现已失效。
    【解决方案3】:

    SDF Viewer 内置了这个功能,你还可以重命名索引、键和关系。只需在数据库树形视图中右键单击要更改的名称即可。

    【讨论】:

    • 如果您能提供指向 SDF 查看器文档的链接,我会很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多