根据前端的要求,需要添加遗漏的字段在固定位置
尽量不要删表重建
sqlserver怎么在现有表结构中,在字段中间插入新字段
如:
原有表结构
序号 字段 字段类型
1 A VARCHAR
2 B VARCHAR
3 D VARCHAR
希望得到的表结构
序号 字段 字段类型
1 A VARCHAR
2 B VARCHAR
3 C VARCHAR
4 D VARCHAR
sqlserveralter table不支持
First, just add each column the usual way (as the last column).
Secondly, in SQL Server Management Studio Get into Tools => Options.
Under 'Designers' Tab => 'Table and Database Designers' menu, uncheck the option 'Prevent saving changes that require table re-creation'.
Afterwards, right click on your table and choose 'Design'. In 'Design' mode just drag the columns to order them.
Don't forget to save.
可以通过设计器来拖动列的顺序,但对大数据量的表不建议,因为会生成一个临时表,再复制数据到临时表,然后删除临时表,大数据的情况下耗时长。字段的顺序通常对应用无影响的,可以在查询时修改顺序或者用视图来修改顺序。
示例代码:
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_SomeTable
(
id INT NOT NULL IDENTITY(1, 1),
Code NVARCHAR(50) NULL,
Name NVARCHAR(255) NULL,
NamePinYin NVARCHAR(255) NULL,--添加的新列
Size NVARCHAR(100) NULL
) ON [PRIMARY];
GO
ALTER TABLE dbo.Tmp_SomeTable SET (LOCK_ESCALATION = TABLE);
GO
SET IDENTITY_INSERT dbo.Tmp_SomeTable ON;
GO
IF EXISTS (SELECT * FROM dbo.SomeTable)
EXEC ('INSERT INTO dbo.Tmp_SomeTable (id, Code, Name, Size)
SELECT id, Code, Name, Size FROM dbo.SomeTable WITH (HOLDLOCK TABLOCKX)');
GO
SET IDENTITY_INSERT dbo.Tmp_SomeTable OFF;
GO
DROP TABLE dbo.SomeTable;
GO
EXECUTE sp_rename N'dbo.Tmp_SomeTable', N'SomeTable', 'OBJECT';
GO
--添加约束
ALTER TABLE dbo.SomeTable
ADD CONSTRAINT PK_SomeTable PRIMARY KEY CLUSTERED (id) WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
GO
--创建索引及其它项目
CREATE NONCLUSTERED INDEX IX_SomeTable
ON dbo.SomeTable (Name)
WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY];
GO
COMMIT;
sqlserver只能添加再最后,如果使用设计器增加一列,拖动到指定位置,保存修改时会提示该操作需要删除重建。
安装一个Navicat可视化完美解决
针对SQLServer的好像不能直接完成这样的操作,建议备份表,然后重新创建表sql把对应的字段往前放,然后创建后,再把数据重新导入。这种针对数据量不是超级大的情况。
如果希望在插入新字段时控制它的位置,可以使用 AFTER 子句。例如要在 "B" 字段之后插入新字段 "C",可以使用以下语句:
ALTER TABLE your_table_name
ADD C VARCHAR AFTER B;
仅供参考,望采纳,谢谢。
在 Microsoft SQL Server 中,您可以使用 ALTER TABLE 语句来添加新字段到已有的表结构中。例如,如果您想在表的第三列的位置插入一个新的字段,您可以使用以下语句:
ALTER TABLE table_name
ADD new_column_name column_definition
AFTER column_name;
其中,table_name 是要修改的表的名称,new_column_name 是新字段的名称,column_definition 是新字段的数据类型和属性,column_name 是表中现有列的名称,在其之后插入新字段。
注意:在使用 ALTER TABLE 语句时,您可以使用 FIRST 或 AFTER 子句来指定新字段的位置。如果使用 FIRST 子句,新字段将插入表的最前面。
ALTER TABLE table_name
ADD new_column_name column_definition
FIRST;
ALTER TABLE table_name
ADD new_column_name column_definition
FIRST;
这将在表的第一列的位置插入新字段。