Как переместить столбец в SQL Server Management Studio? - PullRequest
0 голосов
/ 08 ноября 2019

Я забыл добавить столбец IMPORT_DETAILLANDNBR при первоначальном создании таблицы. Я должен разместить этот столбец рядом со столбцом IMPORT_LANDNBR в моей таблице, но система автоматически помещает столбец IMPORT_DETAILLANDNBR в конец таблицы. Как я могу это исправить? Вот что я попробовал: щелкнув правой кнопкой мыши по таблице и выбрав вкладку «Дизайн», но когда я перемещаю столбец в «Дизайн», он перемещается, но не остается. Возвращается обратно, возвращаясь к концу стола.

1 Ответ

2 голосов
/ 08 ноября 2019

Конструктор таблиц 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...