When a form (or report) is being designed, and retrieves data from a table (eg., where the top-level type is table) Rekall asks for the Unique Key column for the table which is being accessed by the form. If the Auto option is chosen, then Rekall will try to pick a column using the following criteria:
If Rekall can determine a column containing a unique key which can be determined after row insertion, then it will use that column. Update, deletion and insertion are possible.
If the above is not possible, but a unique column can be found, then it will use that column. Update and deletion are possible, but insertion is not possible.
If neither of the above are possible, no default is used. Data can be displayed but not updated.
Alternatively, you can specify a column to be used via the Primary Key Only and Any Unique Column. These force Rekall to use the specified column (and to check that the column is primary or unique respectively). In either case, similar criteria are used to decide what sort of updates are possible.
The last possibility is Any Single Column. This option should be treated with caution; it tells Rekall to treat the specified column as unique (whether or not it really is), and to assume that the value does not change on row insertion or update (even if there are triggers that do so). This is useful where you have a table which you know is in practice unique. With this option set you can always insert and update data; the only retriction is that the user must enter values for it ( Unlike, for instance, a MySQL auto-increment column, where Rekall can leave the server database to generate a value. ) .