作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我有一个 Oracle 数据库(在 APEX 中),其中有一个名为“Scheme”的列。
如下所示:
CREATE TABLE Scheme
(
Scheme_ID NUMBER NOT Null,
description VARCHAR2 (800) ,
price FLOAT (3) ,
amount_sold INTEGER ,
Personal_Trainer_ID NUMBER NOT NULL
) ;
ALTER TABLE Schema ADD CONSTRAINT Schema_PK PRIMARY KEY ( Schema_ID ) ;
现在,我所有的表都像这样设置并且工作正常,但是当我尝试在我的 Scheme 上插入时,它说我正在尝试将 null 插入到主键 scheme_ID 中。
我将向您展示我使用的 2 个 SQL 插入。一份用于 personal_trainer,一份用于计划。
INSERT INTO Personal_Trainer (name, loginname, date_of_birth, password)
VALUES('Bojan', 'Bojan', '15-07-1974','fitline');
Peronal_Trainer 有一个 Personal_Trainer_ID 作为主键,与 Scheme 完全一样。插入此命令效果非常好。
insert into schema (description, price, amount_sold, Personal_Trainer_ID)
values ('3x pushups, 5x bench, 7x squats - 15kg',200, 1, 2);
现在,当我尝试插入此命令时,我收到此错误消息:
ORA-01400: 无法将 NULL 插入 ("SCHEME"."SCHEME_ID")
******************************编辑********************* ***********************
CREATE TABLE Personal_Trainer
(
Personal_Trainer_ID NUMBER NOT NULL,
name VARCHAR2 (35) ,
date_of_birth DATE ,
loginname VARCHAR2 (35) ,
password VARCHAR2 (35)
) ;
ALTER TABLE Personal_Trainer ADD CONSTRAINT Personal_Trainer_PK PRIMARY KEY ( Personal_Trainer_ID ) ;
这是我的私有(private)教练表。
最佳答案
您需要为 schemeid
提供一个唯一的非空值。
Oracle 12c 允许您优雅地将此列定义为标识列:
CREATE TABLE Scheme
(
Scheme_ID NUMBER GENERATED BY DEFAULT AS IDENTITY
description VARCHAR2 (800) ,
price FLOAT (3) ,
amount_sold INTEGER ,
Personal_Trainer_ID NUMBER NOT NULL
);
不幸的是,在早期的 Oracle 版本中,此选项不可用。惯用的解决方案是声明一个序列:
CREATE SEQUENCE scheme_id_seq;
或者直接使用它:
INSERT INTO schema
(scheme_id, description, price, amount_sold, Personal_Trainer_ID)
VALUES
(scheme_id_seq.nextval, '3x pushups, 5x bench, 7x squats - 15kg',200, 1, 2);
或者创建一个触发器自动填充:
CREATE OR REPLACE TRIGGER schema_insert_tr
BEFORE INSERT ON schema
FOR EACH ROW
BEGIN
IF :new.scheme_id IS NULL THEN
SELECT scheme_id_seq.nextval INTO :new.scheme_id FROM DUAL;
END IF;
END;
关于SQL/甲骨文 - "Cannot insert null into primary key",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32624386/
我是一名优秀的程序员,十分优秀!