错误:列中的null值违反了非null约束


CREATE TABLE medico
(num_cedula serial NOT NULL UNIQUE,
nome varchar(20) NOT NULL,
especialidade varchar(20) NOT NULL,
PRIMARY KEY(num_cedula));
CREATE TABLE consulta
(num_cedula serial NOT NULL,
num_doente serial NOT NULL,
data_consulta date NOT NULL,
nome varchar(20) NOT NULL,
CHECK(EXTRACT(DOW FROM data_consulta) NOT IN (6,0)),
UNIQUE(num_doente,data_consulta,nome),
FOREIGN KEY(nome) REFERENCES instituicao(nome) ON UPDATE CASCADE,
FOREIGN KEY(num_cedula) REFERENCES medico(num_cedula) ON UPDATE CASCADE,
PRIMARY KEY(num_cedula,num_doente,data_consulta));
CREATE TABLE analise
(num_analise serial NOT NULL UNIQUE,
especialidade varchar(20) NOT NULL,
num_cedula serial ,
num_doente serial ,
data_analise date ,
data_registo date NOT NULL,
nome varchar(20) NOT NULL,
quant integer NOT NULL,
inst varchar(20) NOT NULL,
CONSTRAINT fk_analise FOREIGN KEY(num_cedula,num_doente,data_analise) REFERENCES consulta(num_cedula,num_doente,data_consulta) ON UPDATE CASCADE,
FOREIGN KEY(inst) REFERENCES instituicao(nome) ON UPDATE CASCADE,
PRIMARY KEY(num_analise)); 

这是我的代码,但当我尝试插入另一个";analise";如果num_cedula、num_doente、data_analize为NULL,则会出现此错误("错误:列"num_cedula"中的NULL值违反非NULL约束细节:失败行包含(32,Ortopedia,null,null,2019-12-02,glicemia,176,Instituicao1(。SQL状态:23502"(我真的不知道为什么。此外,这是我使用的插入代码:

INSERT INTO analise VALUES(32,'Ortopedia',NULL,NULL,NULL,'2019-12-02','glicemia',176,'Instituicao1');

serial数据类型不允许null值。文档解释了在声明serial(重点是我的(时会发生什么:

因此,我们创建了一个整数列,并安排从序列生成器分配其默认值应用NOT NULL约束以确保不能插入空值。

我不认为您真的想要这里的serial。该数据类型的用例是创建一个自动递增的列。您可能可以使用int,这样可以避免出现问题。

相关内容

  • 没有找到相关文章

最新更新