No SQLite, você pode usar o
ALTER TABLE
instrução para adicionar uma coluna a uma tabela existente. Esta é realmente uma das poucas coisas que você pode fazer com o
ALTER TABLE
instrução em SQLite. As únicas coisas que você pode fazer com ALTER TABLE
instrução no SQLite é renomear uma tabela, renomear uma coluna e adicionar uma nova coluna a uma tabela existente. Exemplo 1
Imagine que temos a seguinte tabela:
CREATE TABLE Cats(
CatId INTEGER PRIMARY KEY,
CatName
);
E agora queremos adicionar uma coluna chamada DOB . Poderíamos fazer isso usando o seguinte código:
ALTER TABLE Cats ADD COLUMN DOB;
É simples assim.
Restrições
Você também pode fornecer outras especificações para a definição, como restrições, etc., mas há algumas restrições.
Em particular:
- A nova coluna não pode ter uma
PRIMARY KEY
ouUNIQUE
restrição. - A nova coluna não pode ter um valor padrão de
CURRENT_TIME
,CURRENT_DATE
,CURRENT_TIMESTAMP
, ou uma expressão entre parênteses. - Se um
NOT NULL
restrição for especificada, a coluna deverá ter um valor padrão diferente deNULL
. - Se as restrições de chave estrangeira estiverem habilitadas e uma coluna com
REFERENCES
é adicionada, a coluna deve ter um valor padrão deNULL
. - Se a nova coluna for uma coluna gerada, ela não pode ser
STORED
coluna. Pode ser umVIRTUAL
coluna.
Exemplo 2
Aqui está outro exemplo, desta vez adiciono mais algumas especificações à definição da nova coluna:
CREATE TABLE Dogs(
DogId INTEGER PRIMARY KEY,
DogName
);
E agora queremos adicionar uma coluna chamada DOB . Poderíamos fazer isso usando o seguinte código:
ALTER TABLE Dogs
ADD COLUMN Score NOT NULL DEFAULT 0;
Verifique as alterações
Existem várias maneiras de verificar a estrutura de uma tabela no SQLite.
Uma maneira é usar o
PRAGMA table_info()
demonstração. PRAGMA table_info(Dogs);
Resultado:
cid name type notnull dflt_value pk --- ------- ------- ---------- ---------- -- 0 DogId INTEGER 0 1 1 DogName 0 0 2 Score 1 0 0
Podemos ver a nova coluna e podemos ver que ela tem um
NOT NULL
restrição e que seu valor padrão é 0 .