O que é um campo de autoincremento (IDENTITY) no Oracle?
É um campo que incrementa automaticamente o valor do inteiro a cada nova inserção na tabela.
Como criar um campo de autoincremento no Oracle?
Usamos a cláusula GENERATED BY DEFAULT ON NULL AS IDENTITY ao criar a tabela.
O que acontece se omitirmos o valor do campo IDENTITY ao inserir um novo registro?
O Oracle preenche automaticamente o campo com o próximo valor disponível.
O que acontece com o autoincremento ao apagarmos linhas de uma tabela?
O autoincremento continua a partir do último valor utilizado, ignorando “buracos” na sequência.
É recomendado “forçar” um valor específico para o campo IDENTITY? Por quê?
Não é recomendado, pois pode causar problemas se o valor já existir ou se for maior que o próximo valor esperado pelo autoincremento.
O que significa informar o ID como nulo ao inserir um novo registro?
É o mesmo que omiti-lo, permitindo que o Oracle gere o valor automaticamente.
Qual o tipo de dado recomendado para um campo IDENTITY?
Inteiro (NUMBER).
Quantos campos IDENTITY podemos ter por tabela no Oracle?
Apenas um.
O que acontece se tentarmos inserir um valor para o campo IDENTITY que já existe na tabela?
Ocorre um erro de restrição (violação de chave primária).
Se “forçarmos” um valor alto para o campo IDENTITY e depois omitirmos o valor em uma nova inserção, qual será o próximo valor gerado automaticamente?
O valor será o próximo número inteiro após o último valor gerado automaticamente (o Oracle mantém um controle interno do último valor usado).
Qual a diferença entre omitir o campo ID em um INSERT e inserir NULL no campo ID?
Nenhuma. Para o Oracle, inserir NULL em um campo IDENTITY tem o mesmo efeito de omitir o campo, fazendo com que o valor seja gerado automaticamente.
Podemos inserir valores menores que o último valor do contador interno?
Sim, desde que não viole a restrição de chave primária.
O que significa a expressão GENERATED BY DEFAULT na definição de um campo IDENTITY?
Significa que o valor será gerado automaticamente, a menos que um valor seja explicitamente fornecido na instrução INSERT.
O que significa a expressão ON NULL na definição de um campo IDENTITY?
Significa que o valor será gerado automaticamente apenas se o valor fornecido na instrução INSERT for NULL.
O que significa a expressão AS IDENTITY na definição de um campo IDENTITY?
Indica que o campo é um campo de identidade (autoincremento).
Qual é a principal vantagem de usar campos IDENTITY?
Simplifica a criação de chaves primárias e garante a unicidade dos registros na tabela.
Qual é a principal desvantagem de usar campos IDENTITY?
A falta de controle sobre a sequência de valores gerados, o que pode ser um problema em algumas situações específicas.
Em que situações seria interessante “forçar” o valor de um campo IDENTITY?
Em situações de migração de dados, onde é necessário preservar os valores originais das chaves primárias.
Que cuidados devemos ter quando usamos um campo de autoincremento?
Evitar incluir um valor no campo autoincremento com valor superior ao maior valor da tabela, quando o mesmo for chave primária.
Se formos incluir um valor no campo de autoincremento que seja maior que o valor final do autoincremento e, se este campo for chave primária, quando o autoincremento chegar a este valor, teremos um erro de integridade.
O que acontece se um campo é definido como NOT NULL e você tenta inserir um registro sem especificar um valor para ele?
Ocorre um erro, pois o campo é obrigatório.
Como definir a data e hora atual como valor padrão para um campo DATE?
DEFAULT ON NULL SYSDATE
Qual a função da cláusula GENERATED BY DEFAULT ON NULL AS IDENTITY?
Configura um campo como auto-incremento, gerando automaticamente um novo valor quando o valor inserido é nulo.
No momento da criação da tabela, foi definido um padrão para um campo. Que comportamento este campo tem durante um INSERT?
Se o campo não estiver no comando INSERT, o valor que será incluído será o padrão definido na criação da tabela.
O campo estará preenchido com o seu padrão, caso ele não seja declarado no INSERT.