无法插入空值但无法插入值,因为它是主键oracle

时间:2015-03-15 10:53:28

标签: sql oracle oracle11g insert key

我无法在主键中插入值,但我无法将其留空。为什么? 这是用于在oracle中创建表的sql

        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'));

1 个答案:

答案 0 :(得分: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在oracle"

中不起作用

哈希算法在两个包DBMS_CRYPTO和旧版(已弃用)DBMS_OBFUSCATION_TOOLKIT中实现。您可能需要让DBA为这些包授予执行权。