あなたの質問は不明なままです。 1つのタイプの変更(タイトルごとの「新しいデータ」(INSERT))のみを監視することは、変更を検出するよりも複雑です。 (I want to detect the Changes in my table
簡単なコメントで)
MySql
テーブルのチェックサムを取得する手段を提供します:
checksum table TABLE_NAME [QUICK | EXTENDED]
InnoDBおよびMyISAMテーブルのMySQLWorkbenchの結果:
これらの戻り値の変化を監視することで、変化を検出できます。ただし、注意してください:
- テーブルは
Checksum = 1
で作成されている必要があります オプション -
QUICK
このオプションは、バージョン5.7.2より前のInnoDBテーブルでは機能しません(IIRCおよび現在のコミュニティバージョンは5.7.14です)。
幸い、オプションを指定しない場合、MySQLは値を返す最速のオプションを選択するようです。したがって、タイマーのテーブルごとに変更を追跡するのが簡単になります:
' Track last checksum by table
Friend Class TableItem
Public Property Name As String
Public Property CheckSum As Int64
Public Sub New(n As String)
Name = n
CheckSum = 0
End Sub
End Class
' a list of them to track more than one table:
Private Tables As List(Of TableItem)
初期化:
Timer1.Enabled = True
Tables = New List(Of TableItem)
Tables.Add(New TableItem("Sample"))
Tables.Add(New TableItem("SampleISAM"))
タイマーティックイベント:
' Note: cannot use Parameters for table or col names
Dim sql = "CHECKSUM TABLE {0} "
Using dbcon As New MySqlConnection(mySQLConnStr)
dbcon.Open()
Using cmd As New MySqlCommand(sql, dbcon)
' loop thru collection, polling one at a time
For Each tbl As TableItem In Tables
cmd.CommandText = String.Format(sql, tbl.Name)
Using rdr As MySqlDataReader = cmd.ExecuteReader()
If rdr.Read Then
Dim thisResult = rdr.GetInt64(1)
' ignore the first result
If tbl.CheckSum = 0 Then
tbl.CheckSum = thisResult
Return
End If
' save the last non-zed value
If tbl.CheckSum <> thisResult Then
tbl.CheckSum = thisResult
' method to do something when changed:
TableChanged(tbl.Name)
End If
End If
End Using
Next
End Using
End Using
リストボックスに変更を報告するだけの方法を実行します:
Private Sub TableChanged(tbl As String)
lb.Items.Add(String.Format("Table {0} changed {1}", tbl,
DateTime.Now.ToString("HH:mm:ss.ffffff")))
End Sub
INSERTSのみのようなものを実際に監視するには、ある種のログテーブルを使用する必要があります。そのテーブルをタイムスタンプとおそらくアクションコード(「挿入」、「削除」)で更新するトリガーを追加します。次に、TimeStampに変更がないか確認し、監視以外のアクションを除外します。
特に、複数のテーブルまたは特定の変更イベントを監視するバージョンは、クラスとしてより適切に機能します。タイマーコードはカプセル化でき、テーブル変更のイベントを発生させる可能性があります。
- MySQLv。5.6
13.7.2.3チェックサムテーブルの構文