我正在使用Visual Studio 2008设计 SQL Server Compact Edition 数据库(* .sdf)。我不得不更改我的一个表格的架构,添加一个新列。
我希望将新列“”从底部“移动”到字段列表中的其他位置。如何在Visual Studio设计器中执行此操作?
编辑:我知道从纯粹的技术角度来看,列的顺序无关紧要。我正在为一个应用程序进行原型设计,所以我必须多次更改模式。例如,如果我必须更改主键,那么在最后使用最重要的列将是“丑陋的”。我认为,其他看待代码的开发人员会感到困惑。这是一个美学问题。
答案 0 :(得分:5)
你不能只是在设计师中移动它。您必须创建一个新列,删除旧列,生成脚本并编辑从旧表中插入临时表的脚本,使旧列值(在select中)进入新列。
答案 1 :(得分:2)
我同意Pax。如果由于特定原因,您需要在查询中按特定顺序返回字段,只需更改查询,将字段放在您需要的位置。
如果出于某种原因,您需要不惜一切代价来移动该字段,您可以使用以下脚本执行此操作,这会使 FIELD3 成为第一列在名为 TestTable 的表中:
/* Original sample table with three fields */
CREATE TABLE [dbo].[TestTable](
[FIELD1] [nchar](10) NULL,
[FIELD2] [nchar](10) NULL,
[FIELD3] [nchar](10) NULL
) ON [PRIMARY]
/* The following script will make FIELD3 the first column */
CREATE TABLE dbo.Tmp_TestTable
(
FIELD3 nchar(10) NULL,
FIELD1 nchar(10) NULL,
FIELD2 nchar(10) NULL
) ON [PRIMARY]
GO
IF EXISTS(SELECT * FROM dbo.TestTable)
EXEC('INSERT INTO dbo.Tmp_TestTable (FIELD3, FIELD1, FIELD2)
SELECT FIELD3, FIELD1, FIELD2 FROM dbo.TestTable WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.TestTable
GO
EXECUTE sp_rename N'dbo.Tmp_TestTable', N'TestTable', 'OBJECT'
GO
但是,我坚持认为,您的问题可能会通过不同的方法解决,而不需要重组表。
答案 2 :(得分:0)
请按照以下步骤操作: