2016-12-20 9 views
0

私はParkIn{ parkin_id,InTime}ParkOut{parkout_id,OutTime}およびCounter{ Counter_ID, Counter}の3つのテーブルを持っています。 ParkinテーブルにInsertがあるたびに、前の値に1を加算するためにCounterカラムが必要です.ParkOutテーブルにInsertがあるときは、1を引くためにカウンタカラムが必要です。カウンタテーブルは必ずしも新しい毎回行を表示するのではなく、カウンタ値を更新し続けるだけです。mysqlの別のテーブルからカウンタフィールドを更新する方法

+0

本当にいいですよ。質問ありますか? – e4c5

+0

私はこれのためのトリガを作成することができません。トリガの更新時にカウンタを設定できません。 –

+0

あなたの質問を明確にするために[編集]してください。あなたの 'Counter'テーブルにはいくつの行がありますか?他のテーブルのいずれかに挿入されるたびに、あなたの 'Counter.Counter'値が更新されることを望んでいるようです。あれは正しいですか? –

答えて

1

これは難しいことです。

あなたが説明した値を必要とするときは、

 SELECT (parkin.rowcount - parkout.rowcount) Counter 
     FROM (SELECT COUNT(*) rowcount FROM ParkIn) parkin 
     JOIN (SELECT COUNT(*) rowcount FROM ParkOut) parkout 

を行うことができます。この種のことをするためにデータベースが作られていると信じることができます。

実際にあなたがカウンターテーブルを持っていると思われる場合は、ビューを作成できます。

 CREATE OR REPLACE VIEW Counter AS 
     SELECT (parkin.rowcount - parkout.rowcount) Counter 
     FROM (SELECT COUNT(*) rowcount FROM ParkIn) parkin 
     JOIN (SELECT COUNT(*) rowcount FROM ParkOut) parkout 

あなたのカウンターテーブルは、あなたの質問にそれを説明するように、DBMSの貿易に「マテリアライズド・ビュー」として知られています。実際にリアルタイムで管理している実際のテーブルなので、「実現」しています。問題を解決するために、マテリアライズド・ビューではなく、通常のビューを使用することをお勧めします。

関連する問題