exists — record exists in a database table


Verification of the form field value succeeds if it contains code that exists in the specified database table.

Foreign lookups are possible; see the section called “EXAMPLES”.


Example: Check for value in database table "products"

FORM_FIELD_NAME=exists products

Example: Check for value in database table "products", with custom error message

FORM_FIELD_NAME=exists products Product not found in database

Example: Check for value in database table "products", in foreign column "price"

FORM_FIELD_NAME=exists products:price



exists is available in Interchange versions:

4.6.0-5.9.0 (git-head)


Interchange 5.9.0:

Source: code/OrderCheck/exists.oc
Lines: 54

# Copyright 2005-2007 Interchange Development Group and others
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.  See the LICENSE file for details.
# $Id: exists.oc,v 1.3 2007-03-30 23:40:48 pajamian Exp $

CodeDef exists OrderCheck 1
CodeDef exists Description Existing record
CodeDef exists Routine <<EOR
sub {
my($ref, $name, $value, $code) = @_;

$code =~ s/(\w+)(:+(\w+))?\s*//;
my $tab = $1
  or return (0, $name, errmsg("no table specified"));
my $col = $3;
my $msg = $code;

my $db = database_exists_ref($tab)
  or do {
    $msg = errmsg(
            "Table %s doesn't exist",
    return(0, $name, $msg);

my $used;
if(! $col) {
  $used = $db->record_exists($value);
else {
  #::logDebug("Doing foreign key check, tab=$tab col=$col value=$value");
  $used = $db->foreign($value, $col);

#::logDebug("Checking exists, tab=$tab col=$col, used=$used");
if($used) {
  return (1, $name, '');
else {
  $msg = errmsg(
          "Key %s does not exist in %s, try again.",
         ) unless $msg;
  return(0, $name, $msg);



Interchange Development Group


DocBook! Interchange!