2010-10-19 90 views
15

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

我已经在寻找替代品,但还没有找到。

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

看来,一旦你创建了表,它不能被正确修改 - 这是SQLCE的另一个局限性吗?

回答

2

sp_rename的柱子也工作:

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

例子:

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



UPDATE:其实,sp_rename程序不能在SQL CE可用的编缉!您可以在http://www.bigresource.com/Tracker/Track-ms_sql-4Tvoiom3/找到解决方案

+0

您确定它也适用于Compact Edition吗?我在发布这个问题之前已经尝试过了,并且已经使用您的示例尝试了它,但它不起作用。这是我得到的:该过程的指定参数值无效。 [参数#= 3,程序名称(如果知道)= sp_rename] – lucian 2010-10-19 12:48:22

+0

你说得对。抱歉。似乎sp_rename在SQLCE中不可用。更新我的答案... – Kamyar 2010-10-19 12:55:15

+1

仍然可以在MS Compact Edition 2008中成功使用EXEC sp_rename'demo','pets'重命名表。但是,重新命名列失败了。 – msinfo 2013-11-28 05:23:22

14

确实看起来SQL CE不会允许更改列名称。

您正在创建一个新列并删除旧的正确轨道。

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

东西沿着

alter Table [dbo].[yourTable] add [newColumn] 

update yourTable set newColumn = oldColumn 

alter Table [dbo].[yourTable] drop column [oldColumn] 

行应该创建新列,重复从旧到新的数据,然后删除旧的列。

希望它有帮助!

+1

这可能会起作用,但是新添加的列将成为表格中的最后一列,我不希望那样做。之后有一段时间,您可以在指定的列之后添加,但它在CE中不起作用。它以后找不到关键字。这是我的查询:“ALTER TABLE Inverters ADD COLUMN NewC int after Product”,这是错误:“解析查询时出现错误[令牌行号= 2,令牌行偏移= 21,令牌在错误=之后] ”。 – lucian 2010-10-19 13:14:54

+0

CE中的变更表似乎缺少从这里查看功能http://msdn.microsoft.com/en-us/library/ms174123.aspx缺乏这一点我不知道如何保持您的当前订单短缺重新创建桌子。就我个人而言,我不会过分担心,因为无论如何,我的select语句将指定列顺序。 – Robb 2010-10-19 13:33:26

+2

完美的解决方案(除非列是索引的一部分)。记住第一个命令的数据类型,否则脚本将失败/失败/成功... – Geoff 2011-06-11 15:34:43

0

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

+0

如果您可以提供SDF Viewer文档的链接,我会很有帮助。 – 2012-10-29 06:45:05

相关问题