Ver Mensaje Individual
  #1  
Antiguo 20-08-2017
Unkger Unkger is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 13
Reputación: 0
Unkger Va por buen camino
DELETE con JOIN

Hola!, tengo una pequeña base de datos en SQL Server 2016 llamada Escuela, con las tablas Alumnos, Carrera y Datos, lo que quiero es eliminar los alumnos con la carrera en "Ing. Quimica", tengo llaves primarias en las tres tablas, y 2 foraneas (id_carrera) haciendo referencia a la tabla Carrera, y (id_alumno) haciendo referencia a la tabla Alumnos:

Código SQL [-]
create database Escuela

use Escuela

create table Carrera(
id_carrera int not null primary key, 
carrera varchar(50)
);

create table Alumnos(
id_alumno int not null primary key, nombre varchar(50),
apellidos varchar(50), 
id_carrera int constraint fk_alumnos_carrera foreign key (id_carrera) references Carrera(id_carrera)
);

create table Datos(
id_datos int not null primary key, 
id_alumno int constraint fk_datos_alumnos foreign key (id_alumno) references Alumnos(id_alumno),
correo varchar(50),
edad int
);

insert into Alumnos values(1, 'Jose', 'Rodriguez', 1);
insert into Alumnos values(2, 'Alan', 'Herrera', 2);
insert into Alumnos values(3, 'Estephany', 'Castillo', 3);
insert into Alumnos values(4, 'Pablo', 'Hernandez', 4);

insert into Carrera values(1, 'Ing. Quimica');
insert into Carrera values(2, 'Ing. Industrial');
insert into Carrera values(3, 'Ing. Sistemas');
insert into Carrera values(4, 'Ing. Civil');

insert into Datos values(1, 1, 'correo_jose@gmail.com', 22);
insert into Datos values(2, 2, 'correo_alan@gmail.com', 54);
insert into Datos values(3, 3, 'correo_estephany@gmail.com', 65);
insert into Datos values(4, 4, 'correo_pablo@gmail.com', 76);

Hice esto pero me sale un error:

Código SQL [-]
delete alumnos from alumnos join carrera on alumnos.id_carrera = carrera.id_carrera 
where carrera.carrera = 'Ing. Quimica';

Error que me sale:

Cita:
The DELETE statement conflicted with the REFERENCE constraint "fk_datos_alumnos". The conflict occurred in database "Escuela", table "dbo.Datos", column 'id_alumno'.
The statement has been terminated.
Responder Con Cita