2015-03-15 4 views
0

Я не могу вставить значение в первичный ключ, и я не могу оставить его пустым. Зачем? Вот SQL для создания таблицы в оракулаНевозможно вставить нулевое значение, но не может вставить значение, так как оно является первичным ключом oracle

 CREATE TABLE users(
      id numeric(4), 
      username varchar2(10) NOT NULL, 
      password varchar2(100) NOT NULL, 
      CONSTRAINT users_pk PRIMARY KEY(id) 
     ); 

Вот также SQL для вставки значений в таблице:

 insert into users (username, password) values ('jonaii', MD5('porter')); 

ответ

3

Первичные ключи должны иметь значение. Это характерно для первичных ключей.

В 12c Oracle, наконец, добавил auto-generation of synthetic keys, но, как вы все еще используете более раннюю версию, необходимо использовать явную последовательность:

create sequence user_id_seq; 

Есть варианты для настройки последовательностей: find out more.

Тогда

insert into users (id, username, password) 
    values 
(user_id_seq.nextval, 'jonaii', MD5('porter')); 

В качестве альтернативы можно определить триггер BEFORE INSERT для обработки задания последовательности.


"Однако MD5 не работает в оракула"

алгоритмов хеширования реализованы в двух пакетах, DBMS_CRYPTO и старше (устаревшее) DBMS_OBFUSCATION_TOOLKIT. Возможно, вам понадобится, чтобы DBA предоставил выполнение этих пакетов.

+0

спасибо! Однако MD5 не работает в оракуле. Не могли бы вы помочь мне с другими условиями? – Jonaii

+0

@Jonaii, Что значит «MD5 не работает»? Что вы пробовали? –

Смежные вопросы