2016-10-20 12 views
0

IDとアドレスを持つユーザーのテーブルがあります。私は自分のIDとそのアドレスから生成された座標と2番目のテーブルを設定する必要があります。SQLトリガでAPI接続スクリプトを実行することはできますか?

私が望むのは、新しいユーザーが追加された場合、または住所が変更された場合、その座標を生成して2番目のテーブルを作成することです。

現在のところ、私の解決方法はアドレス付きのユーザーリストをエクスポートし、テキサスA & M's Geoservicesアプリケーションを使用して座標を取得し、新しいExcelファイルの列を新しいテーブル内の適切な場所にインポートします。

私は、これらのテーブルを毎日異なるスケジュールでチェックして適切に更新するアプリケーションをsqlの外に作成することができますが、SQLを自動化してリアルタイムでテーブルを更新することができます。

+0

INSERTステートメントを起動する前に座標を検索することができます。データベース層(つまりSQL Server)は、これらのルックアップを実行するのに理想的な場所ではありません。これは不可能ではありませんが、別のレイヤーで座標参照を行うことをお勧めします。 –

+1

元の挿入/更新トランザクションをa)API呼び出しが完了するのを待っていて、b)API呼び出しによってエラーが発生した場合は中止するようにしますか?大部分の人にとって、両方の質問に対する答えは「いいえ」です。その場合は、キューに登録された*更新を見て、トリガからの更新リクエストを待ち行列に入れておくほうがよいでしょう(例えば、サービスブローカ保留中の更新のキューを表すための単純なテーブル)。デキュー側は、元のトランザクションを危険にさらすことなく、ネットワークの遅延、再試行などを処理できます。 –

答えて

1

コードを(たとえば.NETで)記述して、SQL Serverデータベースにアセンブリとして格納することができます。これはCLRと呼ばれます。ストアドプロシージャと関数の形式でデータベースからこのコードを直接実行することができます。

必要に応じて、最初のテーブルからデータを取り出してルックアップし、2番目のテーブルに更新/挿入するストアドプロシージャをコードで記述することができます。他のプロシージャと同じように、このストアドプロシージャを呼び出すことができました。

MSDNには、これを行う方法の紹介があります。

Filesystemhelperは、ファイル操作を行うclrの例です。あなたが探しているコードではなく、私が話していることの良い例です。

関連する問題