我想在第二个位置的现有表中插入新列。
现在我有列顺序
Emp_id, Emp_Name, Address, phoneNo.
我想在 Emp_Name 附近添加“性别”。
Emp_id, Emp_Name, Gender, Address, phoneNo).
我无法删除此表并创建新表。
我想在第二个位置的现有表中插入新列。
现在我有列顺序
Emp_id, Emp_Name, Address, phoneNo.
我想在 Emp_Name 附近添加“性别”。
Emp_id, Emp_Name, Gender, Address, phoneNo).
我无法删除此表并创建新表。
如果不创建新表,则无法以编程方式执行此操作。
如果允许您创建和删除表,则: 创建一个新表:
CREATE TABLE new_table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
...
);
将数据从主表移动到新表,然后删除旧表。
DROP TABLE my_table
毕竟将新表重命名为旧表上的名称。
--alternative:如果可能,您可以重新排序主机应用程序中的列!
您好,您可以尝试以下方法:
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_TableName
(
Emp_id INT NOT NULL,
Emp_Name VARCHAR(100) NULL,
Gender BIT NULL,
[Address] VARCHAR(100) NULL,
phoneNo int NULL
) ON [PRIMARY]
GO
IF EXISTS(SELECT * FROM dbo.Tmp_TableName)
EXEC('INSERT INTO dbo.Tmp_TableName (Emp_id, Emp_Name, [Address],phoneNo)
SELECT Emp_id, Emp_Name, [Address],phoneNo FROM dbo.TableName WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.TableName
GO
EXECUTE sp_rename N'dbo.Tmp_TableName', N'TableName', 'OBJECT'
GO
COMMIT
确保将 TableName 更改为您的实际表名。
扬尼斯
你可以做到,但有什么用呢?
Alter table T ADD Gender varchar(10);
Alter table T ADD Address2 varchar(100),phoneNo2 varchar(100);
update T set Address2=Address,PhoneNo2=PhoneNo;
Alter table T DROP COLUMN Address,PhoneNo;
Alter table T ADD Address varchar(100),phoneNo varchar(100);
update T set Address=Address2,PhoneNo=PhoneNo2;
Alter table T DROP COLUMN Address2,PhoneNo2;