Ошибка SQL Server: оператор INSERT конфликтует с ограничением FOREIGN KEY - PullRequest
0 голосов
/ 23 мая 2018

Я знаю, что это может показаться глупым, но у меня проблемы с этими таблицами, я знаю, что они не правы, но я не знаю, как их исправить.

Это мой код:

create table Empresarial
(
    paquete varchar(10) not null,
    Alojamiento varchar(10),
    correo varchar(15),
    nlineas int,
    precio decimal(7,2),
    constraint pk_paquete_empresarial primary key(paquete)
);

create table Telefono
(
    paquete varchar(10) not null,
    nllamadas varchar(15),
    precio decimal(7,2),
    constraint pk_paquete_telefono primary key(paquete)
);

create table TVTel
(
    paquete varchar(10) not null,
    nllamadas varchar(15),
    canales varchar(10),
    TVS varchar(10),
    precio decimal(7,2),
    constraint pk_paquete_tvtel primary key(paquete)
);

create table TV
(
    paquete varchar(10) not null,
    canales varchar(10),
    TVS varchar(10),
    precio decimal(7,2),
    constraint pk_paquete_tv primary key(paquete)
);

create table Paquete
(
    IDContrato int not null,
    TipoCon varchar (11) not null,
    paquete varchar(10) not null,
    constraint pk_IDContrato primary key(IDContrato),
    constraint fk_paquete_empresarial foreign key (paquete) references Empresarial(paquete),
    constraint fk_paquete_telefono foreign key (paquete) references Telefono(paquete),
    constraint fk_paquete_tvtel foreign key (paquete) references TVTel(paquete),
    constraint fk_paquete_tv foreign key (paquete) references TV(paquete)
);

Вот мои вставки:

insert into Empresarial 
values ('EMPPAQ001', 'SI', 'SI', 50, 1499.00);

insert into Telefono 
values ('TELPAQ001', '1000', 249.00);

insert into TV 
values ('TVSPAQ001', '52', 1, 289.00);

insert into TVTel 
values ('TVTPAQ001', '1000', '52', 1, 329.00); 

insert into Paquete 
values (1001, 'Mensual', 'TVTPAQ001'), 
       (1002, 'Mensual', 'TVSPAQ001'),
       (1003, 'Mensual', 'TELPAQ001'),
       (1004, 'Mensual', 'EMPPAQ001');

Дело в том, что я хочу сослаться на 4 первичных ключа из 4 разных таблиц водин столбец в другой таблице как внешние ключи.Я получаю эту ошибку:

Оператор INSERT конфликтует с ограничением FOREIGN KEY "fk_paquete_empresarial".Конфликт произошел в базе данных "telecommsouthtest", таблице "dbo.Empresarial", столбце "paquete".

, когда я выполняю некоторые вставки в таблицу Paquete.Как я могу это исправить?

1 Ответ

0 голосов
/ 23 мая 2018

В вашем окончательном определении таблицы:

create table Paquete
(
    IDContrato int not null,
    TipoCon varchar (11) not null,
    paquete varchar(10) not null,
    constraint pk_IDContrato primary key(IDContrato),
    constraint fk_paquete_empresarial foreign key (paquete) references Empresarial(paquete),
    constraint fk_paquete_telefono foreign key (paquete) references Telefono(paquete),
    constraint fk_paquete_tvtel foreign key (paquete) references TVTel(paquete),
    constraint fk_paquete_tv foreign key (paquete) references TV(paquete)
);

Вы указали, что в каждой строке paquete ДОЛЖЕН соответствовать столбцу paquete в всех 4 других таблицах .Не по крайней мере один из них, но ВСЕ из них.

Вы не можете иметь ссылку на внешний ключ из одной таблицы для соответствия одной из многих таблиц.Каждое «ограничение» требуется для этого столбца в каждой строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...