Qual tipo de dado deve ser o campo de autoincremento (IDENTITY)?
Inteiro (NUMBER).
Ao inserir um novo registro em uma tabela com campo IDENTITY, é obrigatório especificar o valor para esse campo?
Não, é possível omitir o campo ID no comando INSERT. O Oracle irá gerar o valor automaticamente.
Quantos campos IDENTITY podem existir por tabela no Oracle?
Apenas um.
O que acontece se tentarmos inserir um valor ID que já existe na tabela?
Ocorre um erro de restrição, pois o valor do ID deve ser único.
O que significa a cláusula GENERATED BY DEFAULT ON NULL AS IDENTITY?
Significa que, se o campo “ID” receber um valor nulo na inclusão de um dado, o Oracle deve substituir pelo autoincremento.
Qual é o nome dado ao campo de autoincremento no Oracle?
IDENTITY
Ao criar uma tabela com um campo IDENTITY, qual cláusula é utilizada para definir o autoincremento?
GENERATED BY DEFAULT ON NULL AS IDENTITY.
O que acontece se omitirmos o campo IDENTITY em um comando INSERT?
O Oracle automaticamente incrementa o valor do campo, utilizando o próximo número inteiro disponível na sequência.
É recomendado “forçar” o valor de um campo IDENTITY ao inserir um novo registro? Por quê?
Não é recomendado, pois pode bagunçar o controle automático do Oracle e causar erros de restrição no futuro.
Se um registro com o maior ID é excluído, o próximo registro inserido terá qual ID?
O próximo ID será o seguinte na sequência, pois o controle do incremento do campo IDENTITY é uma memória à parte e não está diretamente ligado aos valores existentes na tabela.
Tenho a seguinte tabela:
ID DESCRITOR
1 Produto A
2 Produto B
3 Produto C
Se eu executar o comando INSERT INTO TAB_IDENTITY (DESCRITOR) VALUES (‘Produto D’), qual será o valor do campo ID para o novo registro?
4
Criei uma tabela com a seguinte definição:
CREATE TABLE TAB_IDENTITY (
ID NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
DESCRITOR VARCHAR(20)
);
O que acontecerá se eu tentar inserir um registro com o comando INSERT INTO TAB_IDENTITY (ID, DESCRITOR) VALUES (NULL, ‘Produto E’)?
O registro será inserido normalmente, e o valor do campo ID será gerado automaticamente pelo Oracle.
Tenho a seguinte tabela:
ID DESCRITOR
1 Produto A
2 Produto B
3 Produto C
Se eu executar o comando DELETE FROM TAB_IDENTITY WHERE ID = 2 e, em seguida, executar INSERT INTO TAB_IDENTITY (DESCRITOR) VALUES (‘Produto D’), qual será o valor do campo ID para o novo registro?
4
Tenho a seguinte tabela:
ID DESCRITOR
1 Produto A
2 Produto B
3 Produto C
Se eu executar o comando INSERT INTO TAB_IDENTITY (ID, DESCRITOR) VALUES (5, ‘Produto E’) e, em seguida, executar INSERT INTO TAB_IDENTITY (DESCRITOR) VALUES (‘Produto F’), qual será o valor do campo ID para o novo registro?
4
Tenho a seguinte tabela:
ID DESCRITOR
1 Produto A
2 Produto B
3 Produto C
Se eu executar o comando INSERT INTO TAB_IDENTITY (ID, DESCRITOR) VALUES (3, ‘Produto D’), o que acontecerá?
Ocorrerá um erro de restrição, pois já existe um registro com ID igual a 3.
Tenho a seguinte tabela:
ID DESCRITOR
1 Produto A
2 Produto B
3 Produto C
5 Produto E
Se eu executar o comando INSERT INTO TAB_IDENTITY (DESCRITOR) VALUES (‘Produto F’), qual será o valor do campo ID para o novo registro?
6
Criei uma tabela com a seguinte definição:
CREATE TABLE TAB_IDENTITY (
ID NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
DESCRITOR VARCHAR(20)
);
Se eu tentar inserir dois registros com o comando INSERT INTO TAB_IDENTITY (DESCRITOR) VALUES (‘Produto A’) e INSERT INTO TAB_IDENTITY (DESCRITOR) VALUES (‘Produto A’), os dois registros terão o mesmo valor para o campo ID?
Não, cada registro terá um valor de ID diferente, pois o IDENTITY garante a unicidade dos valores.
Tenho a seguinte tabela:
ID DESCRITOR
1 Produto A
2 Produto B
3 Produto C
Se eu executar o comando DELETE FROM TAB_IDENTITY WHERE ID = 1, DELETE FROM TAB_IDENTITY WHERE ID = 2, DELETE FROM TAB_IDENTITY WHERE ID = 3 e, em seguida, executar INSERT INTO TAB_IDENTITY (DESCRITOR) VALUES (‘Produto D’), qual será o valor do campo ID para o novo registro?
4
Tenho a seguinte tabela:
ID DESCRITOR
1 Produto A
2 Produto B
3 Produto C
5 Produto E
Se eu executar o comando INSERT INTO TAB_IDENTITY (ID, DESCRITOR) VALUES (4, ‘Produto D’) e, em seguida, executar INSERT INTO TAB_IDENTITY (DESCRITOR) VALUES (‘Produto F’), qual será o valor do campo ID para o novo registro?
6
Tenho a seguinte tabela:
ID DESCRITOR
1 Produto A
2 Produto B
3 Produto C
Se eu executar o comando INSERT INTO TAB_IDENTITY (ID, DESCRITOR) VALUES (10, ‘Produto D’) e, em seguida, executar INSERT INTO TAB_IDENTITY (DESCRITOR) VALUES (‘Produto E’), qual será o valor do campo ID para o novo registro?
4
Qual comando SQL você usaria para criar uma tabela chamada Produtos com um campo ID do tipo NUMBER como chave primária e IDENTITY, e um campo Nome do tipo VARCHAR(50)?
CREATE TABLE Produtos (
ID NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
Nome VARCHAR(50),
PRIMARY KEY (ID)
);
Qual parte do comando CREATE TABLE define que o campo ID será um IDENTITY e que seu valor será gerado automaticamente quando for nulo?
GENERATED BY DEFAULT ON NULL AS IDENTITY
Se você omitir a parte GENERATED BY DEFAULT ON NULL AS IDENTITY ao criar uma tabela com um campo ID do tipo NUMBER, o que acontecerá?
O campo ID será um campo NUMBER normal, sem a propriedade de autoincremento. Você precisará inserir os valores manualmente.
Qual a importância de definir o campo ID como chave primária (PRIMARY KEY) em uma tabela com IDENTITY?
Garante que cada valor de ID seja único na tabela, evitando a duplicação de registros e permitindo a identificação individual de cada linha.