0

テーブル名がありますService(product, loca, from_agent, to_agent)

product参照Product(pno)

from_agent参考文献Customer(cno) U Driver(drno) U Airline(Ano)

to_agent参考文献Customer(cno) U Driver(drno) U Airline(ano)

cno = Customer Numberこれは別のテーブル名 " Customer" で、その他の詳細などがありas name, addressます

drno=などの他の詳細を持つDriver Number別のテーブル名 " "Drivername, address

ano=などの他の詳細を持つAirline Number別のテーブル名 " "です。Airlinedepport, depttime,arrtime

product変更が行われる前にテーブル内の外部キーを強制的にチェックするトリガーを書きたいと思います。ローカル マッピングの透過性を想定しています。

4

1 に答える 1

0

この種のニーズを解決するために受け入れられている方法は、ストアド プロシージャ コードを記述して参照整合性を強制することではありません。どんなにうまく書いても、そのような解決策を進めていたら、あなたはすでに失敗しています。

このようなソリューションは常に最終的に失敗し、データの整合性の問題が発生するか、常に成功するように効果的に記述されているが、関連するテーブルを非常に強力かつ非効率的にロックする分散トランザクションが必要であるため、すでに失敗しています。セッションパフォーマンスの悪夢。

受け入れられている方法は、データベース プラットフォームの堅牢で十分にテストされた高性能のレプリケーション機能を使用し、一意のキーと外部キーを使用して従来どおり参照整合性を確立し、データベースに何千回も実行させることです。ストアド プロシージャ コードを記述して参照整合性を確保するよりも優れています。

真面目なデータベース開発者は誰しも、ある時点で独自のロール レプリケーションに手を出しますが、最も単純な状況を除いて、常に惨めな失敗をします。

于 2013-11-27T18:19:18.837 に答える