2012-02-15 37 views
58

Mis preguntas esCómo incrementar el valor entero por columnas 1 en SQL

Cómo incrementar el valor de una columna 1.

Por ejemplo, supongamos que una columna ID tiene valores 1,2, 3,4, ..

Ahora cuando actualice esta tabla a continuación ID columna debe incrementar en 1,

Ahora ID se convertirá en 2,3,4,5, ..

+0

cualquier muestra sobre usted quiere? incrementar el valor de la columna en 1 por 1 fila todas las filas? cual es tu mesa (DDL)? muestras de datos (DML)? – Kiquenet

Respuesta

0

Puede usar IDENTITY que lo hará por usted.

CREATE TABLE [dbo].[MyTable](
    [MyTableID] [int] IDENTITY(1,1) NOT NULL, 
    -- Other columns 
) 

Al insertar el primer disco, obtendrá un Id de 1.

97

para agregar uno a cada valor de la tabla ...

UPDATE myTable 
SET ID = ID + 1 

Para crear una nueva valor, uno más que el anterior más alto (generalmente), utilice un column with IDENTITY

+20

Tenga en cuenta que esto no funciona cuando la columna es NULL. Las columnas NULL permanecen NULL, incluso después de incrementarse. Para resolver esto, use la instrucción ['ISNULL'] (http://msdn.microsoft.com/en-us/library/ms184325.aspx) de esta manera:' UPDATE myTable SET ID = ISNULL (ID, 0) + 1' (Tomado de [esta respuesta SO] (http://stackoverflow.com/a/9136574/107625)) –

+0

'SET [Lic] = [Lic] + @ dif'. Nota *** @ dif *** variable puede ser _positivo, 0 o negativo_ – Kiquenet

31

Si desea tener un número único para cada fila generada automáticamente, esto es IDENTIDAD según la respuesta de Neil .

Si cada vez que actualice la tabla que quieren aumentar los valores (es decir, no son teclas):

Update MyTable 
Set IDColumn = IDColumn + 1 
Where <whatever> 
0

puede probar con el siguiente:

DECLARE @i INT 
SET @i = @@ROWCOUNT + 1 

INSERT INTO YourTable 
     (Identity Column)  
VALUES  
     (@i + 1) 
1

En Oracle el código es un poco más complicado.

Deberá crear un campo de autoincremento con el objeto de secuencia (este objeto genera una secuencia numérica).

Utilice la siguiente sintaxis CREAR SECUENCIA:

CREATE SEQUENCE seq_person 
MINVALUE 1 
START WITH 1 
INCREMENT BY 1 
CACHE 10 

El código anterior crea un objeto de secuencia llamada seq_person, que comienza con 1 y se incrementará en 1. También en caché hasta 10 valores para el rendimiento. La opción de caché especifica cuántos valores de secuencia se almacenarán en la memoria para un acceso más rápido.

Para insertar un nuevo registro en la tabla "Personas", tendremos que utilizar la función nextval (esta función recupera el siguiente valor de la secuencia seq_person):

INSERT INTO Persons (ID,FirstName,LastName) 
VALUES (seq_person.nextval,'Lars','Monsen') 

La sentencia SQL anterior sería insertar una nuevo registro en la tabla "Personas". A la columna "ID" se le asignaría el siguiente número de la secuencia seq_person. La columna "Nombre" se establecerá en "Lars" y la columna "Apellido" se establecerá en "Monsen".

2

Prueba esto:

Update Emp set testCount= ISNULL(testCount, 0) + 1 where testId=1 
Cuestiones relacionadas