这些是创建的表和一些插入:
CREATE TABLE aluno(
aluno_id SERIAL PRIMARY KEY,
aluno_nome VARCHAR(50) NOT NULL,
aluno_cpf CHAR(11) UNIQUE NOT NULL,
genero CHAR(1) NOT NULL,
idade SMALLINT NOT NULL
)
INSERT INTO aluno(aluno_nome, aluno_cpf, genero, idade) VALUES ('Rafael Almeida Azevedo',65155524407,'M','18');
INSERT INTO aluno(aluno_nome, aluno_cpf, genero, idade) VALUES ('Vinícius Correia Barbosa',49266274348,'M','19');
INSERT INTO aluno(aluno_nome, aluno_cpf, genero, idade) VALUES ('Kauan Goncalves Costa',97853049498,'M','22');
INSERT INTO aluno(aluno_nome, aluno_cpf, genero, idade) VALUES ('Samuel Correia Sousa',77050313459,'M','21');
INSERT INTO aluno(aluno_nome, aluno_cpf, genero, idade) VALUES ('Diogo Pereira Barros',12981340212,'M','24');
INSERT INTO aluno(aluno_nome, aluno_cpf, genero, idade) VALUES ('Marcos Cardoso Cavalcanti',59681262050,'M','18');
CREATE TABLE curso(
curso_id SERIAL PRIMARY KEY,
curso_codigo SMALLINT UNIQUE,
curso_nome VARCHAR(100) UNIQUE
)
INSERT INTO curso(curso_codigo, curso_nome) VALUES('101','Ciência da Computação');
INSERT INTO curso(curso_codigo, curso_nome) VALUES('102','Análise e Desenvolvimento de Sistemas');
INSERT INTO curso(curso_codigo, curso_nome) VALUES('103','Engenharia de Software');
INSERT INTO curso(curso_codigo, curso_nome) VALUES('104','Tecnologia da Informação');
// these are the inserts I cant get to work
CREATE TABLE aluno_curso(
aluno_curso_id SERIAL PRIMARY KEY,
aluno_id INTEGER UNIQUE REFERENCES aluno(aluno_id),
curso_id INTEGER UNIQUE REFERENCES curso(curso_id)
)
INSERT INTO aluno_curso(aluno_id, curso_id) VALUES (1,4);
INSERT INTO aluno_curso(aluno_id, curso_id) VALUES (2,3);
INSERT INTO aluno_curso(aluno_id, curso_id) VALUES (3,1);
我一直得到[Code: 0, SQL State: 23505]错误,但我不能修复它,我试着重新创建表和更改插入。也尝试使用SELECT MAX(curso_id) FROM curso;
和SELECT nextval('curso_id') from curso;
,但我不能让nextval工作,它说关系不存在
你试了什么?如果要将它们插入aluno_curso
表,则不存在。如果您尝试创建一个外键,这不是正确的方法。
你可以试着创建这个表
CREATE TABLE `aluno_curso` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`aluno_id` int(11) NOT NULL,
`curso_id` int(11) NOT NULL,
)