diff --git a/modules/trigger/trigger.admin.inc b/modules/trigger/trigger.admin.inc
index 2201c7e..37d480b 100644
--- a/modules/trigger/trigger.admin.inc
+++ b/modules/trigger/trigger.admin.inc
@@ -47,7 +47,7 @@ function trigger_assign($type = NULL) {
  * @see trigger_unassign_submit()
  */
 function trigger_unassign($form_state, $hook = NULL, $op = NULL, $aid = NULL) {
-  if (!($hook && $op && $aid)) {
+  if (!isset($hook, $op, $aid)) {
     drupal_goto('admin/build/trigger/assign');
   }
 
diff --git a/modules/trigger/trigger.module b/modules/trigger/trigger.module
index 263a2a1..77f5fd0 100644
--- a/modules/trigger/trigger.module
+++ b/modules/trigger/trigger.module
@@ -115,8 +115,10 @@ function trigger_menu() {
     'description' => 'Unassign an action from a trigger.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('trigger_unassign'),
-    'access arguments' => array('administer actions'),
-    'type' => MENU_CALLBACK,
+    // Only accessible if there are any actions that can be unassigned.
+    'access callback' => 'trigger_menu_unassign_access',
+    // Only output in the breadcrumb, not in menu trees.
+    'type' => MENU_VISIBLE_IN_BREADCRUMB,
     'file' => 'trigger.admin.inc',
   );
 
@@ -124,6 +126,25 @@ function trigger_menu() {
 }
 
 /**
+ * Access callback: Determines if triggers can be unassigned.
+ *
+ * @return
+ *   TRUE if there are triggers that the user can unassign, FALSE otherwise.
+ *
+ * @see trigger_menu()
+ */
+function trigger_menu_unassign_access() {
+  if (!user_access('administer actions')) {
+    return FALSE;
+  }
+
+  $r = db_query('SELECT COUNT(*) FROM trigger_assignments');
+  $row = mysql_fetch_row($r);
+
+  return $row[0] > 0;
+}
+
+/**
  * Access callback for menu system.
  */
 function trigger_access_check($module) {
