基于关系MYSQL插入行
我的mysql数据库中有以下场景。2个表: 待办事项基于关系MYSQL插入行,mysql,insert,Mysql,Insert,我的mysql数据库中有以下场景。2个表: 待办事项 待办事项 待办事项 待办事项同步控制器 待办事项同步id 设备id 应该删除吗 删除了吗 待办事项 如您所见,从todoitems到todo_sync_控制器之间存在一对多关系 我使用php脚本与服务器通信。每次从设备提取todo项时,我都需要确保该设备和todo项都有todo\u sync\u控制器条目。如果缺少,则应创建它 解决这个问题的一种方法是从我的php脚本中使用循环和多个查询,但我想知道是否可以使用单个插入查询来实现这一点
- 待办事项
- 待办事项
- 待办事项同步id
- 设备id
- 应该删除吗
- 删除了吗
- 待办事项
解决这个问题的一种方法是从我的php脚本中使用循环和多个查询,但我想知道是否可以使用单个插入查询来实现这一点?有什么想法吗?您的解决方案非常简单,只需在todo\u sync\u controllers表中为todo\u id和device\u id创建唯一键,这样当您从脚本向表中插入时,它将检查唯一约束,如果它不存在,将插入数据,否则将被mysql错误忽略以进行查询。如果您想检查您的数据是否因为重复键而被插入或忽略,您需要在进行查询时应用If条件,如果返回true,则表示插入已完成,否则将被系统忽略。这将像下面的代码一样完成
if(mysql_query($sql_query)){
echo "your data inserted";
}else{
echo "data already exist";
}
把你的桌子改成
create unique index on todo_sync_controllers (todo_id ,device_id)
为什么不创建一个设备id和todo id的唯一键,然后每次都执行insert查询呢?只有第一次查询才会成功。所以基本上,如果存在其他明智的insert,您希望选择数据。@somnath:insert语句看起来如何?这是否意味着我仍然需要遍历所有todoitems并对每个todo_id执行插入查询?@PrashantShukla:我不需要选择todo_sync_控制器,我只想在该设备id和todoitem不存在时插入它。