我无法在主键中插入值,但我无法将其留空。为什么? 这是用于在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'));
答案 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为这些包授予执行权。