Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro na SQL informada

CREATE TABLE TAB_IDENTITY (ID NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, DESCRITOR VARCHAR(20), PRIMARY KEY (ID));

SELECT * FROM TAB_IDENTITY;

2 respostas

!! 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!!!

solução!

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!