10

Visual Studio 2008 を使用してSQL Server Compact Editionデータベース (*.sdf) を設計しています。新しい列を追加して、テーブルの 1 つのスキーマを変更する必要がありました。

その新しい列を下からフィールド リストの別の位置に「移動」したいと考えています。Visual Studio デザイナーでこれを行うにはどうすればよいですか?

編集:純粋な技術的な観点からは、列の順序は重要ではないことを知っています。アプリケーションのプロトタイプを作成しているので、スキーマを数回変更する必要があります。たとえば、主キーを変更する必要がある場合、最も重要な列が最後にあるのは「醜い」でしょう。コードを見ている他の開発者は混乱すると思います。美学の問題です。

4

3 に答える 3

6

you can't just move it in the designer. You'll have to create a new column, drop the old one, generate the script and edit the script where it inserts into the temp table from the old table, making the old column value (in the select) go into the new column.

于 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 に答える