我正在为我的作业创建第一个数据库,但是我遇到了问题。我有一个Tasks
表,其中有一个列,其中包含正在处理此任务的员工和更改了任务状态的员工。因此,我需要有2个外键(EmployeeId
和ChangedId
)都引用Id
表的Employee
列。
这是描述我想要的图:
Database diagram. Take a look at the "Tasks" and "Employee" tables.
数据库的构建没有问题,但是我无法将项目插入Tasks
表中。
这是此表的代码:
CREATE TABLE [dbo].[Employees]
(
[Id] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
[FirstName] VARCHAR(50) NOT NULL,
[SecondName] VARCHAR(50) NOT NULL,
[LastName] VARCHAR(50) NOT NULL
)
CREATE TABLE [dbo].[Tasks]
(
[Id] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
[Deadline] DATE NOT NULL,
[StatusId] INT NOT NULL,
[ChangedId] INT NOT NULL,
[StatusDate] DATE NOT NULL,
[EmployeeId] INT NOT NULL,
[ShortInfo] VARCHAR(255) NOT NULL,
[ProjectId] INT NOT NULL,
FOREIGN KEY (EmployeeId) REFERENCES Employees(id),
FOREIGN KEY (ChangedId) REFERENCES Employees(id),
FOREIGN KEY (ProjectId) REFERENCES Projects(id),
FOREIGN KEY (StatusId) REFERENCES Status(id)
)
将项目添加到Tasks
:
INSERT INTO Tasks(Deadline, StatusID, ChangedId, StatusDate, EmployeeId, ShortInfo, ProjectId)
VALUES ('2019-12-01', 1, 4, '2018-11-29', 2, 'Hack the security system.', 3),
('2019-02-17', 4, 1, '2019-01-19', 3, 'Design new class system.', 1),
('2019-06-01', 3, 2, '2019-01-11', 4, 'Test the last storyline mission.', 2),
('2018-12-05', 2, 2, '2018-10-03', 2, 'Create Zeus statue model.', 2),
('2019-05-21', 1, 1, '2019-04-14', 3, 'Test the Horde campaign.', 1);
错误信息:
INSERT语句与FOREIGN KEY约束“ FK__Tasks__StatusId__6B24EA82”发生冲突。在数据库“ Task4”的表“ dbo.Status”的列“ Id”中发生了冲突。
答案 0 :(得分:0)
将值插入tasks
应该很容易:
insert into tasks (deadline, statusid, changeid, statusdate, employeeid, shortinfo, projectid)
values (@deadlinedate, @statusid, @changeid, @statusdate, @employeeid, 'This is short info', @projectid);
您只需要确保以下几点:
NULL
并且它们的类型正确。@statusid
有一个整数值,并且该值在status.id
中。答案 1 :(得分:0)
尝试为employeeid和changedid命名外键,因为它们引用了Employee表的相同ID列。