alter table orders add constraint paypal_or_promotional_payment_xor
  check(
    (paypal_payment_id is not null or promotional_payment_id is not null)
     and not
     (paypal_payment_id is not null and promotional_payment_id is not null)
  );
