0

私のmysqlデータベースには次のシナリオがあります。2つのテーブル:

todoitems

  • todo_id
  • todo_title

todo_sync_controllers

  • todo_sync_id
  • デバイスID
  • should_delete
  • is_deleted
  • todo_id

ご覧のとおり、todoitemsからtodo_sync_controllersには1対多の関係があります。

私はphpスクリプトを使用してサーバーと通信します。ToDoアイテムのデバイスからフェッチを実行するたびに、そのデバイスとTodoアイテムのtodo_sync_controllerエントリがあることを確認する必要があります。欠落している場合は作成する必要があります。

これを解決する1つの方法は、php-scriptからループと複数のクエリを使用することですが、これは単一のINSERTクエリを使用して実行できるかどうか疑問に思っていました。何か案は?

4

1 に答える 1

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)
于 2013-03-23T16:15:03.450 に答える