CREATE TABLE TAB_IDENTITY (ID NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, DESCRITOR VARCHAR(20), PRIMARY KEY (ID));
SELECT * FROM TAB_IDENTITY;
CREATE TABLE TAB_IDENTITY (ID NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, DESCRITOR VARCHAR(20), PRIMARY KEY (ID));
SELECT * FROM TAB_IDENTITY;
!! ATENÇÃO !! ERRO PROFESSOR DISPONIBILIZOU SCRIPT QUE NÃO RODOU!
• Suposta solução:
A definição de identidade é introduzida no Oracle 12c. Portanto, se você estiver usando uma versão anterior, use uma sequência.
Sequência é um objeto que não está vinculado a uma mesa específica e pode ser usado em qualquer lugar para obter novos números exclusivos. Por isso, você deve criar um gatilho para definir o valor de sua coluna.
algo como:
--Criar Tabela
CREATE TABLE TAB_IDENTITY ( ID NUMBER not null , DESCRITOR VARCHAR(20) , PRIMARY KEY (ID) );
--Criar Sequence
CREATE SEQUENCE seq_TAB_IDENTITY START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
--Criar trigger
CREATE TRIGGER trg_TAB_IDENTITY BEFORE INSERT OR UPDATE ON TAB_IDENTITY FOR EACH ROW BEGIN :NEW.id := seq_TAB_IDENTITY.NextVal; END;
--Testando
INSERT INTO TAB_IDENTITY (DESCRITOR) VALUES ('CLIENTE 1'); INSERT INTO TAB_IDENTITY (DESCRITOR) VALUES ('CLIENTE 2');
select * from TAB_IDENTITY;
Pronto!!!
Olá Marcio, tudo bem?
Peço desculpas pela demora no retorno.
Isso mesmo Marcio, IDENTITY foi introduzida no Oracle 12c, então ao utilizar versões anteriores, o IDENTITY não funciona, neste caso o instrutor utilizou as versões 18 e 12 durante a formação, então o IDENTITY funcionou para ele.
Foi bem legal você ter disponibilizado aqui com a gente a utilização de sequência, assim Ajudara outros alunos que também estejam usando versões diferentes da utilizada pelo instrutor.
Qualquer nova dúvida é só falar e bons estudos!