アプリケーションを MSSQL+Oracle から Sybase に移植すると、'on delete cascade' に問題があります - Sybase にはオプションがありません。
Sybase には、カスケード削除を実装するトリガーへのリンクがあります: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sqlug/html/sqlug/sqlug815.htm しかし、「カスケード削除」として使用するコンテキストに入れると、そのソリューションには問題があります。
問題は、参照制約がチェックされた後にトリガーが実行されることです。この問題を次に示します。
--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' 制約のため、'delete' ステートメントは失敗します。参照制約のチェックの前に (後ではなく) トリガーが起動された場合、テーブル 'A' から値 '1' が削除され、問題は発生しません。
このため、トリガーを使用して参照制約を実装することを考えています。したがって、Insert および Update トリガーを作成する必要があると思います。使用できるテンプレートはありますか?
何も見落としていないことを確認したいのですが、最初に問題を見て、更新後に制約がまだ有効であることを検証できるように、更新トリガーを作成する必要があることを見逃しました。- それが私がテンプレートを探している理由なので、似たようなものを見逃すことはありません.