Esto se complica con restricciones de clave externa y primaria, así que aquí tiene algunos scripts para ayudarle en su camino:
En primer lugar, cree una columna duplicado con un nombre temporal:
alter table yourTable add tempId int NOT NULL default -1;
update yourTable set tempId = id;
a continuación, obtener el nombre de la restricción de clave primaria:
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'yourTable';
Ahora intente quitar la restricción de clave principal para su columna:
ALTER TABLE yourTable DROP CONSTRAINT PK_yourTable_id;
Si tiene claves foráneas, se producirá un error, por lo que si por lo deje caer las restricciones de clave externa. MANTENGA LA PISTA DE CUALES TABLAS USTED CORRA PARA QUE PUEDA AGREGAR LAS RESTRICCIONES DE INMEDIATO.
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'otherTable';
alter table otherTable drop constraint fk_otherTable_yourTable;
commit;
..
vez que todos sus restricciones de claves foráneas se han eliminado, usted será capaz de eliminar la restricción de PK, la caída de esa columna, cambiar el nombre de la columna de temperatura, y añadir la restricción de PK a esa columna:
ALTER TABLE yourTable DROP CONSTRAINT PK_yourTable_id;
alter table yourTable drop column id;
EXEC sp_rename 'yourTable.tempId', 'id', 'COLUMN';
ALTER TABLE yourTable ADD CONSTRAINT PK_yourTable_id PRIMARY KEY (id)
commit;
por último, añadir las limitaciones FK vuelta en:
alter table otherTable add constraint fk_otherTable_yourTable foreign key (yourTable_id) references yourTable(id);
..
el fin!
¿Puedes publicar el esquema de la tabla aquí? –
Estoy seguro de que hay excelentes razones por las que SQL Server no admite eliminar una propiedad de identidad de una columna mediante una simple instrucción ALTER TABLE ..., pero de todos modos me entristece que ese sea el caso. –