MSSQL + OracleからSybaseへの移植アプリケーションで、 'delete delete cascade'に問題があります - Sybaseにはオプションがありません。参照制約をトリガーに置き換える一般的な方法はありますか?
Sybaseには、カスケード削除を実装するためのトリガーとのリンクがあります。削除:http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sqlug/html/sqlug/sqlug815.htm 「on delete cascade」として使用する場合、その解決策に問題があります。
参照制約がチェックされた後にトリガーが実行されるという問題があります。 問題はここに例示されている:
--drop table A
--drop table B
create table A (c int primary key)
create table B (c int primary key)
alter table A
add constraint Ac FOREIGN KEY (c) REFERENCES B(c)
create trigger delBA on B for delete
as delete A from A, deleted where A.c = deleted.c
insert into B values (1)
insert into A values (1)
delete B where c = 1
「削除」ステートメントがあるためAC「」制約のため、失敗します。トリガーが(後ではなく)参照制約のチェックの前に起動した場合、テーブル 'A'から値 '1'が削除され、問題は発生しませんでした。
このため、私は、トリガを使用して参照制約を実装しようと考えています。だから私は挿入と更新のトリガーを作成する必要があります、と私は信じています。私は使用できるテンプレートがありますか?
私が何かを見落としていないことを確認したいのですが、問題を最初に見て、更新のトリガーを書き留めておいて、更新後に制約が有効であることを検証できるようにしてください。 - それが私がテンプレートを探している理由なので、私は似たようなものを見逃しません。