我想在第二個位置插入現有表中的新列。在sql表中添加新列
現在我有列的次序一樣
Emp_id, Emp_Name, Address, phoneNo.
我想在不久的EMP_NAME加上「性別」。
Emp_id, Emp_Name, Gender, Address, phoneNo).
我無法刪除此表並創建新表。
我想在第二個位置插入現有表中的新列。在sql表中添加新列
現在我有列的次序一樣
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
確保表名更改爲實際的表名。
Giannis
你可以做到但是爲了什麼?
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;
http://blog.sqlauthority.com/2008/04/08/sql-server-change-order-of-column-in-database-tables/ – stuartd
你爲什麼要將其添加到該特定位置? –
只是我舉了個例子。我想在另一個表中實現。我們需要遵循統一的所有表格。 – user2354274