React中MySQL自增ID同步至data字段及删除逻辑问题
同步MySQL自增ID到JSON类型的data字段
一、批量更新现有数据
如果要把已存在的所有数据的自增id同步到data字段内的id属性,可以使用MySQL的JSON_SET函数执行批量更新:
UPDATE your_table_name SET data = JSON_SET(data, '$.id', CAST(id AS CHAR)), edited_on = NOW() WHERE data->>'$.id' != CAST(id AS CHAR);
JSON_SET(data, '$.id', CAST(id AS CHAR)):定位到dataJSON对象中的id属性,将其值替换为自增id的字符串形式(匹配原有数据的字符串类型)edited_on = NOW():同步更新修改时间字段WHERE子句:只更新data内id与自增id不一致的行,避免无意义的重复更新
二、新增数据时自动同步
为了避免后续新增数据出现id不一致的情况,可以创建触发器,在插入数据前自动将自增id写入data的id属性:
DELIMITER // CREATE TRIGGER sync_id_to_data BEFORE INSERT ON your_table_name FOR EACH ROW BEGIN SET NEW.data = JSON_SET(NEW.data, '$.id', CAST(NEW.id AS CHAR)); END // DELIMITER ;
触发器会在每次插入数据前执行,确保data内的id与数据库自增id完全一致。
三、关于React删除操作的验证建议
既然已确认删除操作现在使用数据库自增id而非data内的id,可以通过以下方式再次验证:
- 查看前端删除请求的参数,确认传递的是数据库自增
id(如示例中的5045)而非data内的21 - 在后端删除逻辑中,强制以自增
id作为删除条件,避免因参数错误误用其他id导致数据误删
内容的提问来源于stack exchange,提问作者Andre Bantquin
相关产品推荐
相关产品推荐

