我知道在这个问题上有很多问题,但我一直未能解决。我正在做一个图形界面来添加/删除员工和管理缺勤。
我一直在阅读和测试那些建议stackOverflow1,但我不能更改数据库,因为它已经由我们的教授给出了。
来自外键的值已经在表“service”中,我在代码中称之为“department”。
我有以下数据库(对于我得到问题的表):
DROP TABLE IF EXISTS personnel;
CREATE TABLE personnel (
IDPERSONNEL int NOT NULL,
IDSERVICE int NOT NULL,
NOM varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
PRENOM varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
TEL varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
MAIL varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
DROP TABLE IF EXISTS service;
CREATE TABLE service (
IDSERVICE int NOT NULL,
NOM varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
在应用程序中,您可以看到这里和下面的图片,我必须修改员工数据,并将其再次保存到DataGridView。
我有一个问题,一旦我点击保存。请求出错,但不知道如何解决。
无法添加或更新子行:外键约束失败(GestionPerson
。Person
,constraintPersonnel_IBFK_1
外键(IDService
)引用Service
(IDService
))
下面是我在AccessDatabase类中使用的方法:
public static void UpdateEmployee(Employee employee)
{
string req = "update personnel set nom = @nom, prenom = @prenom, tel = @tel, mail = @mail, idservice = @idservice ";
req += "where idpersonnel = @idpersonnel;";
Dictionary<string, object> parameters = new Dictionary<string, object>
{
{"@idpersonnel", employee.IdEmployee },
{"@idservice", employee.IdDepartment },
{"@nom", employee.FamilyName },
{"@prenom", employee.FirstName },
{"@tel", employee.Phone },
{"@mail", employee.Mail }
};
ConnexionDataBase connexion = ConnexionDataBase.GetInstance(connexionString);
connexion.ReqUpdate(req, parameters);
}
更新1:
更新3(回复@crowcoder):这确实是@sharath给我的同样的评论。我有一种感觉,我得到的是部门的字段,而不是IDDepartment。
这里是保存按钮的代码:
private void BtnSaveEmployee_Click(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(textBoxFamilyName.Text) ||
String.IsNullOrEmpty(textBoxFirstName.Text) ||
String.IsNullOrEmpty(textBoxPhone.Text) ||
String.IsNullOrEmpty(textBoxMail.Text))
{
MessageBox.Show("All the informations shall be filled", "Information");
}
else
{
Department department = (Department)bindingSourceDepartments.List[bindingSourceDepartments.Position];
int idEmployee = 0;
if (modificationOngoing)
{
idEmployee = (int)dataGridViewEmployee.SelectedRows[0].Cells["idEmployee"].Value;
}
Employee employee = new Employee(idEmployee,
textBoxFamilyName.Text,
textBoxFirstName.Text,
textBoxPhone.Text,
textBoxMail.Text,
department.IdDepartment,
department.DepartmentName);
if (modificationOngoing)
{
controlMyApp.UpdateEmployee(employee);
modificationOngoing = false;
grpBoxEmployee.Enabled = true;
lblShowButtonClicked.Text = "Adding";
}
else
{
controlMyApp.AddEmployee(employee);
}
FillEmployeesList();
EmptyEmployeeSelection();
}
}
请检查更新员工详细信息时发送的IDservice的值。从错误来看,正在更新的IdService值似乎不存在于父表服务中。
我有两个表,当我试图保存通常的实体,扔 组织。springframework。刀。DataIntegrityViolationException:无法添加或更新子行:外键约束失败(,约束外键(,)引用(,));SQL[n/a];约束[null];嵌套的异常是org。冬眠例外ConstraintViolationException:无法添加或更新子行:外键约束失败(,constraint外键(,)参
问题内容: 当我不想相互连接两个表时,我得到以下消息:#1452-无法添加或更新子行:外键约束失败....我想从facebook_users表格中连接oauth_uid2(主键)外键为oauth_uid2的错误列表。但是我总是得到这个信息。我已经清除了数据,但没有任何效果。在表users_facebook中,我还有1条记录。 1452-无法添加或更新子行:外键约束失败(。,在更新级联上删除级联时使
当我不想将两个表相互连接时,我收到消息:#1452 - 无法添加或更新子行:外键约束失败....我想使用外键oauth_uid2将oauth_uid2(主键)从facebook_users选项卡连接到错误选项卡。但我总是收到这个信息。我已经清除了我的数据,但没有任何效果。同样在表中users_facebook我有 1 条记录。 1452-无法添加或更新子行:外键约束失败(., CONSTRAINT
如果我插入: 我用visual studio代码和mysql控制台的源代码编写代码 第一表: 第二表: 第三表: 我收到消息: 错误1452(23000):无法添加或更新子行:外键约束失败(。,约束外键()在更新级联的删除级联上引用() 请帮帮我:(,,thx:)
错误代码:1452。无法添加或更新子行:外键约束失败(.,约束外键()引用()) 我看过其他关于这个话题的帖子,但没有运气。我是不是在监督什么或者知道该怎么做?
我有两张桌子,“预订”和“isBooked”。我想在isBooked表中添加值。但我不断收到错误“无法添加或更新子外键约束失败”。 有人能告诉我为什么在尝试将值插入“isBooked”时会出现此错误吗?