2013-07-24 3 views
2

Je souhaite insérer une nouvelle colonne dans la table existante avec la 2ème position.Ajouter une nouvelle colonne dans la table SQL

Maintenant, j'ai ordre des colonnes comme

Emp_id, Emp_Name, Address, phoneNo. 

Je veux ajouter « genre » dans près emp_name.

Emp_id, Emp_Name, Gender, Address, phoneNo). 

Je ne peux pas supprimer ce tableau et créer une nouvelle table.

+0

http://blog.sqlauthority.com/2008/04/08/sql-server-change-order-of-column-in-database-tables/ – stuartd

+3

Pourquoi voulez-vous pour l'ajouter à cette position spécifique? –

+0

juste j'ai donné l'exemple. Je veux mettre en application dans une autre table. Nous devons suivre l'uniforme pour toutes les tables. – user2354274

Répondre

1

Vous ne pouvez pas faire cela par programme sans créer une nouvelle table.

si vous êtes autorisé à créer et supprimer des tables, puis: créer une nouvelle table:

CREATE TABLE new_table_name 
(
column_name1 data_type(size), 
column_name2 data_type(size), 
... 
); 

déplacer les données de votre table principale à la nouvelle puis supprimer l'ancienne table. Après tout, renommez la nouvelle table dont le nom était sur votre ancienne table supprimée, - alternative: vous pouvez réorganiser les colonnes dans votre application hôte si possible!

0

Salut vous pouvez essayer ce qui suit:

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 

Assurez-vous de changer TableName à votre nom réel de la table.

Giannis

0

Vous pouvez le faire mais pour quoi faire?

SQLFiddle demo

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; 
Questions connexes