【发布时间】:2011-01-31 02:22:51
【问题描述】:
我想将这段逻辑实现为触发器,但我不知道该怎么做!我想创建一个触发器,当删除一行时,它会检查其中一个列的值是否存在于另一个表中,如果存在,它还应该基于另一列对另一个表执行删除。
假设我们有一个包含列 Bar、Baz 的表 Foo。如果我不使用触发器,这就是我正在做的事情:
function deleteFromFooTable(FooId)
{
SELECT (Bar,Baz) FROM FooTable WHERE id=FooId
if not-empty(SELECT * FROM BazTable WHERE id=BazId)
DELETE FROM BarTable WHERE id=BarId
DELETE FROM FooTable WHERE id=FooId
}
我在那个伪代码中跳了一些圈,但我希望你们都明白我要去的地方。看来我需要的是一种在触发器语句中执行条件和循环(在多行删除的情况下?)的方法。到目前为止,我还没有找到任何东西。这是不可能的,还是这是不好的做法?谢谢!
【问题讨论】: