Вставить, конфликтовать с внешним ключом - PullRequest
0 голосов
/ 22 мая 2018
create table Interventions
(

    InterventionID BIGINT IDENTITY (1,1) PRIMARY KEY NOT NULL,
    InterventionCustomerID BIGINT FOREIGN KEY REFERENCES Customer(CustomerID) NOT NULL,
    InterventionMalfunctionDescription NVARCHAR(MAX) NOT NULL,
    CustomerID BIGINT FOREIGN KEY REFERENCES Customer(CustomerID),
    EmployeeID INT FOREIGN KEY REFERENCES Employees(EmployeeID),
    TypeOfEquipementID INT FOREIGN KEY REFERENCES TypeOfEquipements(TypeOfEquipementID),
    StatusID INT FOREIGN KEY REFERENCES TypeOfStatus(StatusID),
    SerialNumber VARCHAR(255) FOREIGN KEY REFERENCES SerialNumbers(SerialNumber),
    GroupID INT FOREIGN KEY REFERENCES TypeOfGroup(GroupID) NOT NULL,
    InterventionCreateDate DATETIME NOT NULL,
    InterventionStartDate DATETIME,
    InterventionFinnishDate DATETIME,
    InterventionArchiveDate DATETIME

);

create table Customer
(
CustomerID BIGINT IDENTITY(1,1) PRIMARY KEY NOT NULL,
OrganizationName VARCHAR(255) NOT NULL,
Telephone VARCHAR(255),
MobileTelephone VARCHAR(255) NOT NULL,
CustomerAdressLine1 VARCHAR(255) NOT NULL,
CustomerAdressLine2 VARCHAR(255),
PostalCode VARCHAR(255) NOT NULL,
FederalTaxID VARCHAR(255) UNIQUE NOT NULL,
EmailAddress VARCHAR(255) UNIQUE NOT NULL,
SageCustomerID BIGINT UNIQUE

);


INSERT INTO Interventions(InterventionCustomerID, InterventionMalfunctionDescription, CustomerID, EmployeeID, TypeOfEquipementID, StatusID, SerialNumber, GroupID, InterventionCreateDate, InterventionStartDate, InterventionFinnishDate, InterventionArchiveDate) VALUES
('1', 'abc', '4', '4', '1', '1', 'SerialNumber1', '1', '2019-01-01', '2019-01-02', '2019-01-03', '2019-01-04'),
('2', 'abc', '5', '5', '2', '2', 'SerialNumber2', '2', '2019-02-01', '2019-02-02', '2019-02-03', '2019-02-03'),
('3', 'abc', '6', '6', '3', '3', 'SerialNumber3', '3', '2019-03-01', '2019-03-02', '2019-03-03', '2019-03-04');

Select * from Customer;

enter image description here

Ошибка:

Оператор INSERT вступил в конфликт с ограничением FOREIGN KEY "FK__Intervent__Inter__6C190EBB".Конфликт произошел в базе данных «ADSGLOBAL», таблице «dbo.Customer», столбце «CustomerID».

1 Ответ

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

У вас есть ограничение на InterventionCustomerID, которое говорит, что оно ссылается на Customer(CustomerID).

В вашем операторе вставки говорится, что вы пытаетесь вставить значения 1, 2, 3 вэтот столбец.

Ваш SELECT * FROM customer показывает, что клиенты 1, 2, 3 не существуют в этой таблице.

Вы не можете вставлять записи для клиентов 1, 2, 3, пока не создадите их в таблице Customer.

...