none
Error Msg 547, Level 16, State 0, Line 80 y Error Msg 2627, Level 14, State 1, Line 76 RRS feed

  • Pregunta

  • Buen día.

    Estoy iniciando en SQL server y al realizar un ejemplo me salen los errores 2627 y 547 al insertar los datos a las tablas, la verdad no encuentro error, seria de gran ayuda si me indican que es lo que debo de realizar para poder cargar los datos correctamente.

    Gracias.

    A continuación agrego el código: 

    create database Escuela
    use Escuela

    --Tabla carrera
    create table carrera(
    clave_c int,
    nom_c varchar(50),
    durac_c float,
    constraint pk_cc primary key(clave_c)
    )
    -- Tabla materia
    create table materia(
    clave_m int,
    nom_m varchar(50),
    cred_m float,
    constraint pk_cm primary key(clave_m)
    )

    -- Tabla profesor
    create table profesor(
    clave_p int,
    nom_p varchar(150),
    dir_p varchar(200),
    tel_p bigint,
    hor_p datetime,
    constraint pk_cp primary key(clave_p)
    )

    /* Tabla alummo
       (Con una clave foranea)*/

       create table alumno(
       mat_alu int,
       nom_alu varchar(50),
       edad_alu int,
       sem_alu int,
       gen_alu varchar(10),
       clave_c1 int,
       constraint pk_calu primary key(mat_alu),
       constraint fk_fc1 foreign key(clave_c1) references carrera (clave_c)
       )

       -- Alumno profesor
       create table alu_pro(
       mat_alu1 int,
       clave_p1 int,
       constraint fk_falu1 foreign key(mat_alu1) references alumno(mat_alu),
       constraint fk_fp1 foreign key(clave_p1) references profesor(clave_p)
       )

    -- Materia-Alumno
    create table mat_alu(
    clave_m1 int,
    mat_alu2 int,
    constraint fk_fm1 foreign key(clave_m1) references materia(clave_m),
    constraint fk_falu2 foreign key(mat_alu2) references alumno(mat_alu)
    )

    -- Materia Profesor
    create table mat_pro(
    clave_m2 int,
    clave_p2 int,
    constraint fk_fm2 foreign key(clave_m2) references materia(clave_m),
    constraint fk_fp2 foreign key(clave_p2) references profesor(clave_p)
    )

    /*Insert*/
    --Tabla carrera
    insert into carrera values (3,'Diseño',3)

    --Tabla materia
    insert into materia values(3,'Dibujo',15)
    insert into materia values(4,'Programación',20)

    --Tabla alumno
    insert into alumno values(2,'Sergio',19,7,'Hombre',2)
    insert into alumno values(3,'Julieta',20,6,'Mujer',3)

    --Alumno-Profesor
    insert into alu_pro values(2,2)
    insert into alu_pro values(3,2)

    --Materia-ALumno
    insert into mat_alu values(4,2)
    insert into mat_alu values(3,3)
    insert into mat_alu values(4,1)

    miércoles, 3 de junio de 2020 1:02

Respuestas

  • Hola GAM1233:

    El primer error que tienes dice.

    Mens. 547, Nivel 16, Estado 0, Línea 75
    Instrucción INSERT en conflicto con la restricción FOREIGN KEY 'fk_fc1'. El conflicto ha aparecido en la base de datos 'Escuela', tabla 'dbo.carrera', column 'clave_c'.
    Se terminó la instrucción.

    En la sentencia de inserción de alumnos, la clave foránea fk_fc1 se ve incumplida, porque no existe una carrera cuya columna clave_c tenga de identificador un 2.

    insert into carrera values (2,'a',2)

    Si insertas una carrera 2, ese ya queda resuelto.

    Luego intentas insertar en Alumno-Profesor cuando aún no has insertado en la tabla Profesores.

    Y la última sentencia de inserción en mat_alu intentas insertar el registro (4,1), cuando no hay un alumno cuyo identificador sea 1.

    En Sql server, es buena práctica las sentencias insert, ponerles el nombre de las columnas que vas a insertar.

    insert into alumno  
    (mat_alu, nom_alu, edad_alu, sem_alu, gen_alu, clave_c1)
    values
     (4,'Sergio',19,7,'Hombre',2)
    ,(5,'Julieta',20,6,'Mujer',3);

    Además puedes poner varias inserciones en la misma sentencia.

    INSERT

    https://docs.microsoft.com/es-es/sql/t-sql/statements/insert-transact-sql?view=sql-server-ver15



    • Marcado como respuesta GAM1233 miércoles, 3 de junio de 2020 3:59
    miércoles, 3 de junio de 2020 3:25

Todas las respuestas

  • Hola GAM

    El error es que en los INSERT no se especifica la PK (primary key o clave principal), porque es un dato automático. 

    Saludos

    Pablo

    miércoles, 3 de junio de 2020 1:53
  • Hola GAM1233:

    El primer error que tienes dice.

    Mens. 547, Nivel 16, Estado 0, Línea 75
    Instrucción INSERT en conflicto con la restricción FOREIGN KEY 'fk_fc1'. El conflicto ha aparecido en la base de datos 'Escuela', tabla 'dbo.carrera', column 'clave_c'.
    Se terminó la instrucción.

    En la sentencia de inserción de alumnos, la clave foránea fk_fc1 se ve incumplida, porque no existe una carrera cuya columna clave_c tenga de identificador un 2.

    insert into carrera values (2,'a',2)

    Si insertas una carrera 2, ese ya queda resuelto.

    Luego intentas insertar en Alumno-Profesor cuando aún no has insertado en la tabla Profesores.

    Y la última sentencia de inserción en mat_alu intentas insertar el registro (4,1), cuando no hay un alumno cuyo identificador sea 1.

    En Sql server, es buena práctica las sentencias insert, ponerles el nombre de las columnas que vas a insertar.

    insert into alumno  
    (mat_alu, nom_alu, edad_alu, sem_alu, gen_alu, clave_c1)
    values
     (4,'Sergio',19,7,'Hombre',2)
    ,(5,'Julieta',20,6,'Mujer',3);

    Además puedes poner varias inserciones en la misma sentencia.

    INSERT

    https://docs.microsoft.com/es-es/sql/t-sql/statements/insert-transact-sql?view=sql-server-ver15



    • Marcado como respuesta GAM1233 miércoles, 3 de junio de 2020 3:59
    miércoles, 3 de junio de 2020 3:25
  • Entiendo, muchas gracias Javi muy clara la explicación ya lo resolví.
    Saludos.
    miércoles, 3 de junio de 2020 3:59
  • Hola GAM1233

    Gracias por confirmar que se ha encontrado una solución a la consulta realizada. Debido a ello, este hilo será cerrado. 

    Si es necesario, por favor abra un nuevo hilo. 

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN. 

     

     Andres Aguilar

    ____________________________ 

      


    miércoles, 3 de junio de 2020 13:26
    Moderador