diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c
index 7f45d347d3e22f74f51615b28095994fee49951f..b940315bbf18c794866fba88f4f2bf3ea995c68b 100644
--- a/src/backend/utils/adt/ri_triggers.c
+++ b/src/backend/utils/adt/ri_triggers.c
@@ -17,7 +17,7 @@
  *
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.50 2003/04/26 22:21:47 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.51 2003/06/11 15:02:25 momjian Exp $
  *
  * ----------
  */
@@ -883,17 +883,6 @@ RI_FKey_noaction_upd(PG_FUNCTION_ARGS)
 	old_row = trigdata->tg_trigtuple;
 
 	match_type = ri_DetermineMatchType(tgargs[RI_MATCH_TYPE_ARGNO]);
-	if (ri_Check_Pk_Match(pk_rel, fk_rel,
-						  old_row, trigdata->tg_trigger->tgoid,
-						  match_type, tgnargs, tgargs))
-	{
-		/*
-		 * There's either another row, or no row could match this one.  In
-		 * either case, we don't need to do the check.
-		 */
-		heap_close(fk_rel, RowShareLock);
-		return PointerGetDatum(NULL);
-	}
 
 	switch (match_type)
 	{
@@ -941,6 +930,18 @@ RI_FKey_noaction_upd(PG_FUNCTION_ARGS)
 				return PointerGetDatum(NULL);
 			}
 
+			if (ri_Check_Pk_Match(pk_rel, fk_rel,
+								  old_row, trigdata->tg_trigger->tgoid,
+								  match_type, tgnargs, tgargs))
+			{
+				/*
+				 * There's either another row, or no row could match this one.  In
+				 * either case, we don't need to do the check.
+				 */
+				heap_close(fk_rel, RowShareLock);
+				return PointerGetDatum(NULL);
+			}
+
 			if (SPI_connect() != SPI_OK_CONNECT)
 				elog(ERROR, "SPI_connect() failed in RI_FKey_noaction_upd()");