2012-02-15 3 views
58

Le mie domande ècome incrementare il valore intero Colonne da 1 a SQL

come incrementare il valore di una colonna 1.

Ad esempio, supponiamo che una colonna ID ha valori 1,2, 3,4, ..

Ora quando aggiorno questa tabella allora ID colonna dovrebbe incrementare da 1,

Ora ID diventerà 2,3,4,5, ..

+0

qualsiasi campione di voi vuole? incrementare il valore della colonna di 1 per 1 riga? tutte le righe? qual è il tuo tavolo (DDL)? campioni di dati (DML)? – Kiquenet

risposta

0

È possibile utilizzare IDENTITY che farà questo per voi.

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

Quando si inserisce il vostro primo disco, si otterrà un Id di 1.

97

Per aggiungere uno per ogni valore nella tabella ...

UPDATE myTable 
SET ID = ID + 1 

Per creare una nuova valore, uno in più del precedente più alto (di solito), usa un column with IDENTITY

+20

Si prega di notare che questo _non_ funziona quando la colonna è NULL. Le colonne NULL rimangono NULL, anche dopo l'incremento. Per risolvere questo problema, utilizzare l'istruzione ['ISNULL'] (http://msdn.microsoft.com/en-us/library/ms184325.aspx) in questo modo:' UPDATE myTable SET ID = ISNULL (ID, 0) + 1' (Tratto da [questa risposta SO] (http://stackoverflow.com/a/9136574/107625)) –

+0

'SET [Lic] = [Lic] + @ dif'. Nota *** La variabile @ dif *** può essere _positive, 0 o negative_ – Kiquenet

31

Se si desidera avere un numero univoco per ogni riga generata automaticamente, questa è IDENTITÀ come da risposta di Neil .

Se ogni volta che si aggiorna la tabella che si vuole aumentare i valori (cioè non sono le chiavi):

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

si potrebbe provare la seguente:

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

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

In Oracle codice è un po 'più complicato.

Sarà necessario creare un campo di incremento automatico con l'oggetto sequenza (questo oggetto genera una sequenza numerica).

utilizzare la seguente sintassi CREATE SEQUENCE:

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

Il codice precedente crea un oggetto sequenza denominata seq_person, che inizia con 1 e incrementerà di 1. Sarà anche cache fino a 10 valori per le prestazioni. L'opzione cache specifica quanti valori di sequenza saranno archiviati in memoria per un accesso più rapido.

Per inserire un nuovo record nella tabella "Persone", dovremo usare la funzione nextval (questa funzione recupera il valore successivo da sequenza seq_person):

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

L'istruzione SQL sopra sarebbe inserire un nuovo record nella tabella "Persone". Alla colonna "ID" verrebbe assegnato il numero successivo dalla sequenza seq_person. La colonna "FirstName" sarebbe stata impostata su "Lars" e la colonna "LastName" sarebbe stata impostata su "Monsen".

2

Prova questo:

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