10

我正在使用 Visual Studio 2008 设计SQL Server Compact Edition数据库 (*.sdf)。我不得不更改我的一个表的架构,添加一个新列。

我想将该新列从底部“移动”到字段列表中的不同位置。如何在 Visual Studio 设计器中执行此操作?

编辑:我知道从纯粹的技术角度来看,列的顺序并不重要。我正在对应用程序进行原型设计,因此我必须多次更改架构。例如,如果我必须更改主键,那么最后最重要的列将是“丑陋的”。我认为其他查看代码的开发人员会感到困惑。这是美学问题。

4

3 回答 3

6

你不能只在设计器中移动它。您必须创建一个新列,删除旧列,生成脚本并编辑从旧表插入临时表的脚本,使旧列值(在选择中)进入新列。

于 2009-04-28T13:52:35.783 回答
2

我同意帕克斯。如果出于特定原因,您需要在查询中以特定顺序返回字段,只需更改查询,将字段放在您需要的位置。

如果出于某种原因,您需要不惜一切代价移动该字段,则可以使用如下脚本执行此操作,这使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

但是,我坚持认为您的问题可能可以通过不需要重组表的不同方法来解决。

于 2009-04-28T14:05:37.797 回答
0

按着这些次序:

  1. 删除原表的所有外键和主键
  2. 重命名原始表
  3. 使用 CTAS 按您想要的顺序创建原始表
  4. 放下旧桌子。
  5. 将所有约束应用回原始表
于 2015-09-22T05:22:16.963 回答