将应用程序从 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”并且不会有问题。
出于这个原因,我正在考虑通过使用触发器来实现引用约束。所以我必须创建一个插入和更新触发器,我相信。有没有我可以使用的模板?
我想确保我没有忽略任何东西,乍一看这个问题,我错过了应该编写更新触发器,以便它可以验证更新后约束仍然有效。- 这就是我正在寻找模板的原因,所以我不会错过任何类似的东西。