"Rick Schumeyer" <rschumeyer@xxxxxxxx> writes: > -- delete to item and book instead of bookview > create rule bookviewdel as on delete to bookview do instead ( > delete from book where id=old.id; > delete from item where id=old.id; > ); This is an ancient gotcha: as soon as you delete the book row, there is no longer any such entry in the bookview view ... and "old.id" is effectively a reference to the bookview view, so the second delete finds no matching rows. If you can reasonably turn the view into a LEFT JOIN in one direction or the other, then a workaround is to delete from the nullable side first. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq