私は昨夜これを聞いて、マージに関する情報を入手しました(これはpostgresqlでは利用できません)。提案された回避策を試してみますが、条件付きロジックでは実行できない理由を理解しようとしています。
質問を少し明確にしたので、おそらくこれは理解しやすいでしょう。
テーブルにデータを挿入するクエリがあります。しかし、それは毎回新しい記録を作成しています。行が最初にあるかどうか、次にあるかどうか、UPDATE
ないかどうかを確認する方法はありINSERT
ますか?
$user = 'username';
$timestamp = date('Y-m-d G:i:s.u');
$check_time = "start"; //can also be stop
$check_type = "start_user"; //can also be stop_user
$insert_query = "INSERT INTO production_order_process_log (
production_order_id, production_order_process_id, $check_time, $check_type)
VALUES (
'$production_order_id', '$production_order_process_id', '$timestamp', '$user')";
テーブルはチェックインとチェックアウトの値(production_order_process_log.start
およびproduction_order_process_log.stop
)を記録するという考え方です。$production_order_process_id
したがって、チェックアウトタイムスタンプのあるレコードが作成される前に、クエリはすでに存在するかどうかを確認する必要があります。存在する場合は、タイムスタンプを入力stop
でき$check_type
ますstop_user
。そうでなければ、彼らはとどまることができstart
ますstart_user
。
私は基本的にこの結果を避けようとしています。
+----+---------------------+--------------------------------+--------------------+-------------------+-------------+-------------+
| id | production_order_id | production_order_process_id | start | stop | start_user | stop_user |
+----+---------------------+--------------------------------+--------------------+-------------------+-------------+-------------+
| 8 | 2343 | 1000 | 12 july 03:23:23 | NULL | tlh | NULL |
+----+---------------------+--------------------------------+--------------------+-------------------+-------------+-------------+
| 9 | 2343 | 1000 | NULL | 12 july 03:45:00 | NULL | tlh |
+----+---------------------+--------------------------------+--------------------+-------------------+-------------+-------------+
このタスクを実行するためにpostgresqlロジックを検討するのを手伝ってくれてありがとう。