Minhas perguntas são
como incrementar o valor de uma coluna em 1.
Por exemplo, suponha que uma coluna ID
tenha valores 1,2,3,4, ..
Agora, quando eu atualizo esta tabela, a ID
coluna deve aumentar em 1,
Agora ID
se tornará 2,3,4,5, ..
sql-server-2005
Varinder
fonte
fonte
Respostas:
Para adicionar um a cada valor na tabela ...
UPDATE myTable SET ID = ID + 1
Para criar um novo valor, mais um do que o anterior mais alto (normalmente), use uma coluna com IDENTITY
fonte
ISNULL
declaração como esta:UPDATE myTable SET ID = ISNULL(ID, 0) + 1
(Retirado desta resposta do SO )SET [Lic] = [Lic] + @dif
. Observe que a variável @dif pode ser positiva, 0 ou negativaSe você quiser ter um número único para cada linha gerada automaticamente, essa é a IDENTIDADE de acordo com a resposta de Neil.
Se cada vez que você atualizar a tabela quiser aumentar os valores (ou seja, eles não são chaves):
Update MyTable Set IDColumn = IDColumn + 1 Where <whatever>
fonte
Experimente isto:
Update Emp set testCount = ISNULL(testCount, 0) + 1 where testId=1
fonte
Você pode usar o
IDENTITY
que fará isso por você.CREATE TABLE [dbo].[MyTable]( [MyTableID] [int] IDENTITY(1,1) NOT NULL, -- Other columns )
Ao inserir seu primeiro registro, você obterá um
Id
de 1.fonte
No Oracle, o código é um pouco mais complicado.
Você terá que criar um campo de incremento automático com o objeto de sequência (este objeto gera uma sequência numérica).
Use a seguinte sintaxe CREATE SEQUENCE:
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
O código acima cria um objeto de sequência chamado seq_person, que começa com 1 e aumentará em 1. Ele também armazenará em cache até 10 valores para desempenho. A opção de cache especifica quantos valores de sequência serão armazenados na memória para acesso mais rápido.
Para inserir um novo registro na tabela "Pessoas", teremos que usar a função nextval (esta função recupera o próximo valor da sequência seq_person):
INSERT INTO Persons (ID,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen')
A instrução SQL acima iria inserir um novo registro na tabela "Pessoas". A coluna "ID" seria atribuída ao próximo número da sequência seq_person. A coluna "FirstName" seria definida como "Lars" e a coluna "LastName" seria definida como "Monsen".
fonte
Você pode tentar o seguinte:
DECLARE @i INT SET @i = @@ROWCOUNT + 1 INSERT INTO YourTable (Identity Column) VALUES (@i + 1)
fonte