valor una tabla por nombre modificar eliminar defecto con columna campo cambiar agregar sql sql-server

sql - por - Agregue una columna a la tabla existente y numere de forma única



eliminar columna sql (8)

Ayudaría si publicaras qué base de datos SQL estás usando. Para MySQL, probablemente quiera auto_increment:

ALTER TABLE tableName ADD id MEDIUMINT NOT NULL AUTO_INCREMENT KEY

Sin embargo, no estoy seguro de si esto aplica los valores de forma retroactiva. Si no es así, solo debería poder iterar sobre sus valores con un procedimiento almacenado o en un programa simple (siempre que nadie más esté escribiendo en la base de datos) y configurar la función LAST_INSERT_ID() para generar el valor de identificación. .

Deseo agregar una columna a una base de datos heredada existente y escribir un procedimiento mediante el cual pueda asignar a cada registro un valor diferente. Algo así como agregar una columna y generar automáticamente los datos para ello.

Al igual, si agrego una nueva columna llamada "ID" (número), quiero inicializar un valor único para cada uno de los registros. Entonces, mi columna de ID tendrá registros de, digamos, 1 a 1000. ¿Cómo hago eso?


Depende de la base de datos ya que cada base de datos tiene una forma diferente de agregar números de secuencia. Alteraría la tabla para agregar la columna y luego escribiría una secuencia de comandos db en groovy / python / etc para leer los datos y actualizar la identificación con una secuencia. Una vez que se hayan establecido los datos, agregaría una secuencia a la tabla que comienza después del número superior. Una vez que se han establecido los datos, configure las claves principales correctamente.


Esto dependerá de la base de datos, pero para SQL Server, esto se puede lograr de la siguiente manera:

alter table Example add NewColumn int identity(1,1)


Si no desea que su nueva columna sea de tipo IDENTITY (autoincremento) o si desea especificar el orden en que se numeran sus filas, puede agregar una columna de tipo INT NULL y luego rellenarla como esta. En mi ejemplo, la nueva columna se llama MyNewColumn y la columna de la clave principal existente para la tabla se llama MyPrimaryKey.

UPDATE MyTable SET MyTable.MyNewColumn = AutoTable.AutoNum FROM ( SELECT MyPrimaryKey, ROW_NUMBER() OVER (ORDER BY SomeColumn, SomeOtherColumn) AS AutoNum FROM MyTable ) AutoTable WHERE MyTable.MyPrimaryKey = AutoTable.MyPrimaryKey

Esto funciona en SQL Sever 2005 y versiones posteriores, es decir, versiones que admiten ROW_NUMBER()



Y el equivalente de Postgres (la segunda línea es obligatoria solo si quiere que "id" sea una clave):

ALTER TABLE tableName ADD id SERIAL; ALTER TABLE tableName ADD PRIMARY KEY (id);


para Oracle, podrías hacer algo como debajo

alter table mytable add (myfield integer); update mytable set myfield = rownum;


para el tipo de datos UNIQUEIDENTIFIER en el servidor sql prueba esto

Alter table table_name add ID UNIQUEIDENTIFIER not null unique default(newid())

Si desea crear una clave primaria de esa columna, use esto

ALTER TABLE table_name ADD CONSTRAINT PK_name PRIMARY KEY (ID);