1

在 Sybase ASE 中,我有一些审计表和位于主表上的触发器。审计非常简单,每个表都有一个插入/更新/删除触发器,它简单地插入一个相同的行和附加列,该列标记/标记操作是插入、更新还是删除、用户和时间。

现在审计并不重要,所以如果由于任何原因审计触发器失败,那么我们希望避免杀死触发触发器的整个操作。

假设 TableA 具有插入 TableB 的 TriggerA。

我们在 TableA 上执行 StatementX,它触发由 StatmentsY 组成的 TriggerA,TriggerA 在 SatmentsY 上无法插入到 TableB 中。现在正常的模式是回滚 StatementX 和 StatementY 以确保完整性。

有没有办法说在触发器内创建一个保存点,这样如果 StatementY 失败,StatementX 没有中断并且 StatementX 仍然被提交(即只有 StatementY 被回滚)?

4

1 回答 1

1

我认为这是不可能的。

触发器仅在数据修改语句完成并且 Adaptive Server 检查任何数据类型、规则或完整性约束违规后触发。触发器和触发它的语句被视为可以从触发器内回滚的单个事务。如果检测到严重错误,则回滚整个事务。

有关更多信息,请查看


添加:您还可以查看以获取有关回滚触发器的信息,但我认为这不完全是您想要的。

于 2012-04-19T09:23:13.060 回答