SQL Server 移動列順序 解決辦法 表重建

2021-10-09 22:02:51 字數 1650 閱讀 3775

1. 原始表(t_b_posdish)結構如下:

2. 為該錶新增乙個fid欄位,從1開始自增,且設定主鍵,語句如下:

alter table t_b_posdish add fid int primary key identity(1, 1) not null
效果如下:

這個列追加到了最後, 由於某些原因,需要吧fid新增到第一列。又由於某些原因,不能在sql管理器去設計表,只能通過sql語句進行。

3. 考慮該錶資料不能丟失,執行了以下語句(刪除了之前表新增的fid列):

a. 轉移資料至備份表t_b_posdish_bak

b. 刪除t_b_posdish表

c. 新建t_b_posdish表

d. 將備份表t_b_posdish_bak的資料轉到到t_b_posdish表

e. 刪除備份表t_b_posdish_bak

if exists (select * from dbo.sysobjects where id = object_id(n'[dbo].[t_b_posdish]') and objectproperty(id, n'isusertable') = 1)

begin

if (select id from syscolumns where name='fid' and [id]=object_id('t_b_posdish')) is null

begin

select * into t_b_posdish_bak from t_b_posdish

drop table t_b_posdish

create table [dbo].[t_b_posdish](

[fid] [int] identity(1,1) not null,

[fposid] [varchar](5) not null,

[fkeycode] [int] not null,

[fdishid] [varchar](20) not null,

constraint [pk_t_b_posdish] primary key clustered

([fid] asc) with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on [primary]

) on [primary]

insert into t_b_posdish(fposid,fkeycode,fdishid) select * from t_b_posdish_bak

drop table t_b_posdish_bak

endendgo

效果如下:

原始表的資料也沒有丟失。

mysql 移動列的順序

mysql資料庫工具好像沒有調表列順序的功能,但是我們可以通過sql語句實現。語句 quote alter table 表名 modify 欄位名 字段型別 after 字段 quote 舉例 1 把user name列移動到password後面 alter table employee modif...

SQL Server 索引列的順序 真的沒關係嗎

翻譯自 當設定表的索引時,在效能上有乙個微妙的平衡 太多的索引將影響你的insert update delete操作。但是索引不足又將影響你的select操作。本文將著眼於索引的列順序和如何影響查詢計畫及效能。示例sqlserver表和資料集 tablecreation logic create t...

SQL Server 索引列的順序 真的沒關係嗎

翻譯自 當設定表的索引時,在效能上有乙個微妙的平衡 太多的索引將影響你的insert update delete操作。但是索引不足又將影響你的select操作。本文將著眼於索引的列順序和如何影響查詢計畫及效能。示例sqlserver表和資料集 tablecreation logic create t...