如何在SQL Server Management Studio中移动列?

问题描述 投票:0回答:1

最初创建表时,我忘记添加IMPORT_DETAILLANDNBR列。我必须将此列放置在表中IMPORT_LANDNBR列的旁边,但是系统会自动将IMPORT_DETAILLANDNBR列放置在表的末尾。我怎样才能解决这个问题?这是我尝试的方法:右键单击表格,然后单击“设计”选项卡,但是当我在“设计”中移动该列时,它会移动,但不会停留。通过移回到表的末尾,它可以还原。

sql-server database
1个回答
1
投票

如果您确实需要更改表的列顺序,则SSMS表设计器可以执行此操作。保存更改后,SSMS将生成一个更改脚本,该脚本创建新表,复制所有数据,删除旧表并重命名新表。 EG:

/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_TEST_TABLE
    (
    COLLECT_DATA_SEQ int NOT NULL,
    COLUMN2 varchar(36) NOT NULL,
    COLUMN3 varchar(20) NOT NULL,
    COLUMN4 varchar(20) NOT NULL,
    COLUMN5 tinyint NULL,
    COLUMN6 datetime NOT NULL,
    COLUMN7 datetime NULL,
    COLUMN15 datetime NULL,
    COLUMN8 varchar(10) NOT NULL,
    COLUMN9 tinyint NOT NULL,
    COLUMN10 tinyint NOT NULL,
    COLUMN11 tinyint NULL,
    COLUMN12 tinyint NOT NULL,
    COLUMN13 varchar(36) NOT NULL,
    COLUMN14 tinyint NOT NULL,
    COLUMN16 char(8) NULL,
    COLUMN18 char(8) NULL,
    COLUMN17 datetime NULL
    )  ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_TEST_TABLE SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.TEST_TABLE)
     EXEC('INSERT INTO dbo.Tmp_TEST_TABLE (COLLECT_DATA_SEQ, COLUMN2, COLUMN3, COLUMN4, COLUMN5, COLUMN6, COLUMN7, COLUMN15, COLUMN8, COLUMN9, COLUMN10, COLUMN11, COLUMN12, COLUMN13, COLUMN14, COLUMN16, COLUMN18, COLUMN17)
        SELECT COLLECT_DATA_SEQ, COLUMN2, COLUMN3, COLUMN4, COLUMN5, COLUMN6, COLUMN7, COLUMN15, COLUMN8, COLUMN9, COLUMN10, COLUMN11, COLUMN12, COLUMN13, COLUMN14, COLUMN16, COLUMN18, COLUMN17 FROM dbo.TEST_TABLE WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.TEST_TABLE
GO
EXECUTE sp_rename N'dbo.Tmp_TEST_TABLE', N'TEST_TABLE', 'OBJECT' 
GO
ALTER TABLE dbo.TEST_TABLE ADD CONSTRAINT
    PK_TEST_TABLE PRIMARY KEY CLUSTERED 
    (
    COLLECT_DATA_SEQ
    ) WITH( PAD_INDEX = OFF, FILLFACTOR = 80, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO
COMMIT
© www.soinside.com 2019 - 2024. All rights reserved.