基于关系MYSQL的INSERT行

时间:2013-03-23 15:17:34

标签: mysql insert

我的mysql数据库中有以下场景。 2桌:

todoitems

  • todo_id
  • todo_title

todo_sync_controllers

  • todo_sync_id
  • DEVICE_ID
  • should_delete
  • IS_DELETED
  • todo_id

正如您所看到的,从todoitems到todo_sync_controllers存在一对多的关系。

我使用php脚本与服务器通信。每次我从todo项目的设备中获取时,我需要确保该设备和todo项目有一个todo_sync_controller条目。如果它丢失了,就应该创建它。

解决这个问题的一种方法是使用我的php脚本中的循环和多个查询,但我想知道是否可以使用单个INSERT查询来完成此操作?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你的解决方案很简单,只需在你的todo_sync_controllers表中为todo_id和device_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)