gpt4 book ai didi

mysql - 插入前检查外键是否完整

转载 作者:行者123 更新时间:2023-11-30 01:25:36 25 4
gpt4 key购买 nike

我有两个表,分别是跟随和配置文件,并在下面的表中插入配置文件的 id(外键)

在插入表外键之前,如何确定与表的配置文件 ID 匹配?

var o_segui = {
seguace_id: profilo,
seguito_id: data.profilo_da_seguire,
created: new Date()
};

connection.query('INSERT INTO follow SET ?', o_segui, function(error, rows) {
if (error) {
var err = "Error on 'seguiAction': " + error;
console.error(err);
throw err;
}

现在我在插入之前检查现在是否存在查询:

connection.query('SELECT count(*) as n FROM profile WHERE id =' + connection.escape(profilo_da_seguire), function(error, rows) {
if (error) {
var err = "Error on 'verifico Profilo': " + error;
console.error(err);
throw err;
}

console.log(rows);

if (rows.shift().n > 0) { then OK

在我的插入中更新我会抛出错误...如果我评论抛出错误服务器 Node 不会下降...我必须评论这一行并关闭连接?

最佳答案

设置前检查在使用数据库时通常不是一个好方法。主要是因为您必须考虑对表可能的并发访问。

无论如何,关于外键约束,如果您使用 InnoDB,引擎在插入时检查您。

所以,我认为还是乐观一点尝试插入比较好。但要准备好优雅地处理可能的失败。

编辑:我构建了一个示例,以“证明”数据库引擎 InnoDB 强制执行完整性约束: http://sqlfiddle.com/#!2/f372d/1

正如您将看到的,错误数据不会插入到数据库中。在您的程序中,您必须处理相应的异常/错误。

关于mysql - 插入前检查外键是否完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18034254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com