2009-06-17 18 views
0

私は、SQLサーバーで、次のトリガーを書かれている:これはMS Accessで実行できるようになりますMS SQLサーバーにトリガーを書き込むのは、MS Accessに書き込むのと同じですか?

create trigger test_trigger 
on invoice -- This is the invoice table 
for insert 
as 
declare @invoiceAmount int -- This is the amount specified in the invoice 
declare @custNumber int  -- This is the customer's id 

--use the 'inserted' keyword to access the values inserted into the invoice table 
select @invoiceAmount = Inv_Amt from inserted 
select @custNumber = cust_num from inserted 


update customer 
set amount = @invoiceAmount 
where Id = @custNumber 

をや構文違うのですか?

答えて

3

Accessデータベースエンジン(以前はJetと呼ばれていました)にはトリガがなく、フロー制御構文がありません。 PROCEDUREは正確に1つのSQL文で構成されていなければなりません。

本当にやりたいことを教えてください。代わりの構文があります。

たとえば、請求書のUNIQUE制約(cust_num、Inv_Amt)、新しいキーを参照するFOREIGN KEYの顧客(ID、金額)、新しいキーを参照するための2つのテーブルを結合するVIEW FOREIGN KEY列を作成し、4つの列すべてを表示してから、 'invoice'テーブルではなくVIEWにINSERTします。特権を使用して基本テーブルへのINSERTを防止することができますが、ユーザーレベルのセキュリティは新しいAccess 2007エンジン(ACE)から削除されました。

しかし、あなたが私の言うことを気にしなければ、あなたのトリガーは現実のシナリオを反映していないと思います。直近の請求書の金額を保持するために、テーブル 'customer'の中の「amount」という名前の列?挿入された論理テーブルに複数の顧客の行が含まれる場合はどうですか?私が言うように、私はあなたが本当に達成しようとしていることを教えてくれる必要があると思います。

+0

実際の生活のシナリオではないことは間違いありません。私はOracleやMS Accessで同様のことをするためのトリガを書く必要がある課題に取り組んでいます。私はOracleを持っていないので、私はMS Accessを使用する必要がありますが、MS Accessはトリガーを使用しませんが、SQL Serverで試してみると思いました。 – Draco

+0

オラクルのダウンロードサイトには、「すべてのソフトウェアのダウンロードは無料であり、それぞれに開発ライセンスが付属しているため、アプリケーションの開発とプロトタイプ作成中に製品のフルバージョンを無償で使用できます」(http://www.oracle.com/jp) com/technology/software/index.html) – onedaywhen

+0

私の会社はOracleデータベースエンタープライズ版を無制限に使用していますが、まだインストールすることはまだありません。ポット...ケトル...黒...:) – onedaywhen

0

MSアクセスにはトリガーがありません。

つまり、Access Jetエンジン(.mdbファイルを作成する)です。 Accessがデータベースサーバーに接続している場合、そのデータベースにあるすべてのトリガーが使用されます。

0

SQL Server上でADPを処理していない限り、私はAccessでトリガーを検出することはありません。あなたの答えは「はい」です。これはバックエンドのSQL Serverを使用している場合と同じですが、テーブルがAccessに格納されている場合は同じです。

+0

ADPにはトリガがありません。使用可能なトリガーはSQL Serverによって提供されます。 –

2

アクセスは、それが複数行誰かが複数の行を更新する(そして、それはないだろう言っていない瞬間を更新考慮されていませんので、あなたがここに表示さ

あなたのトリガが出て爆撃しますトリガを持っていませんそれが良い

バッチ当たり

トリガー火ではなく、行ごとに、Multirow Considerations for DML Triggers

が挿入された疑似テーブルと値を更新する代わりに、請求書のテーブルを結合するお読みください)いくつかの防御的なコーディングの練習をしますので、1のために働くこと...起こります1行以上

+0

男の話を聞いて、彼はどこで話しているか知っている – HLGEM

関連する問題