diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 4c2ee626fe0422194360311f67d17ab0a03c0c3e..353d684d9039fc43f05b5078ea5fe800ed77be5b 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.122 2002/07/20 05:16:57 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.123 2002/07/20 19:55:38 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -50,6 +50,14 @@ static void DeferredTriggerExecute(DeferredTriggerEvent event, int itemno,
 					   MemoryContext per_tuple_context);
 
 
+/*
+ * Create a trigger.  Returns the OID of the created trigger.
+ *
+ * forConstraint, if true, says that this trigger is being created to
+ * implement a constraint.  The caller will then be expected to make
+ * a pg_depend entry linking the trigger to that constraint (and thereby
+ * to the owning relation(s)).
+ */
 Oid
 CreateTrigger(CreateTrigStmt *stmt, bool forConstraint)
 {
@@ -94,6 +102,12 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint)
 	if (aclresult != ACLCHECK_OK)
 		aclcheck_error(aclresult, RelationGetRelationName(rel));
 
+	/*
+	 * Generate the trigger's OID now, so that we can use it in the name
+	 * if needed.
+	 */
+	trigoid = newoid();
+
 	/*
 	 * If trigger is an RI constraint, use specified trigger name as
 	 * constraint name and build a unique trigger name instead.
@@ -103,7 +117,7 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint)
 	if (stmt->isconstraint)
 	{
 		snprintf(constrtrigname, sizeof(constrtrigname),
-				 "RI_ConstraintTrigger_%u", newoid());
+				 "RI_ConstraintTrigger_%u", trigoid);
 		trigname = constrtrigname;
 		constrname = stmt->trigname;
 	}
@@ -279,10 +293,14 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint)
 
 	tuple = heap_formtuple(tgrel->rd_att, values, nulls);
 
+	/* force tuple to have the desired OID */
+	AssertTupleDescHasOid(tgrel->rd_att);
+	HeapTupleSetOid(tuple, trigoid);
+
 	/*
 	 * Insert tuple into pg_trigger.
 	 */
-	trigoid = simple_heap_insert(tgrel, tuple);
+	simple_heap_insert(tgrel, tuple);
 
 	CatalogOpenIndices(Num_pg_trigger_indices, Name_pg_trigger_indices, idescs);
 	CatalogIndexInsert(idescs, Num_pg_trigger_indices, tgrel, tuple);