C:\cpanrun\depot\main\contrib-patched\perl\CPAN\src\DBIx-Portable\blib/html/site/lib/DBIx/Portable.html


DBIx::Portable::PDBI::Table</pre> <p>This PDBI module is a container class that describes a single database table, and would be used for such things as managing schema for the table (eg: create, alter, destroy), and describing the table's &quot;public interface&quot; so other functionality like views or various DML operations know how to use the table. In its simplest sense, a Table object consists of a table name, a list of table columns, a list of keys, a list of constraints, and a few other implementation details. This class does not describe anything that is changed by DML activity, such as a count of stored records, or the current values of sequences attached to columns. This class can generate Command objects having types of: 'table_verify', 'table_create', 'table_alter', 'table_destroy'.</p> <p>Here is sample code for defining a few tables with this class:</p> <pre> <span class=``keyword''>my</span> <span class=``variable''>%table_info</span> <span class=``operator''>=</span> <span class=``keyword''>map</span> <span class=``operator''>{</span> <span class=``operator''>(</span> <span class=``variable''>$_</span><span class=``operator''>-&gt;</span><span class=``operator''>{</span><span class=``string''>name</span><span class=``operator''>}</span><span class=``operator''>,</span> <span class=``variable''>DBIx::Portable::PDBI::Table</span><span class=``operator''>-&gt;</span><span class=``variable''>new</span><span class=``operator''>(</span> <span class=``variable''>$_</span> <span class=``operator''>)</span> <span class=``operator''>)</span> <span class=``operator''>}</span> <span class=``operator''>(</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_auth'</span><span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_id'</span><span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'int'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``string''>'default_val'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``string''>'auto_inc'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'login_name'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str20'</span> <span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'login_pass'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str20'</span> <span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'private_name'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str100'</span> <span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'private_email'</span><span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str100'</span> <span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'may_login'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'boolean'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'max_sessions'</span><span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'byte'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``string''>'default_val'</span> <span class=``operator''>=&gt;</span> <span class=``number''>3</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``string''>'unique_key_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'PRIMARY'</span> <span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``string''>'user_id'</span> <span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'sk_login_name'</span> <span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``string''>'login_name'</span> <span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'sk_private_email'</span><span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``string''>'private_email'</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``string''>'primary_key'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'PRIMARY'</span><span class=``operator''>,</span> <span class=``comment''># from unique keys list, others are surrogate</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_profile'</span><span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_id'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'int'</span> <span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'public_name'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str250'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'public_email'</span><span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str250'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>0</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'web_url'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str250'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>0</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'contact_net'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str250'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>0</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'contact_phy'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str250'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>0</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'bio'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str250'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>0</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'plan'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str250'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>0</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'comments'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str250'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>0</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``string''>'unique_key_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'PRIMARY'</span> <span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``string''>'user_id'</span> <span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'sk_public_name'</span><span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``string''>'public_name'</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``string''>'primary_key'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'PRIMARY'</span><span class=``operator''>,</span> <span class=``comment''># from unique keys list, others are surrogate</span> <span class=``string''>'foreign_key_list =&gt; [ { '</span><span class=``variable''>name</span><span class=``string''>' =&gt; '</span><span class=``variable''>fk_user</span><span class=``string''>', '</span><span class=``variable''>foreign_table</span><span class=``string''>' =&gt; '</span><span class=``variable''>user_auth</span><span class=``string''>', '</span><span class=``variable''>column_list</span><span class=``string''>' =&gt; [ { '</span><span class=``variable''>name</span><span class=``string''>' =&gt; '</span><span class=``variable''>user_id</span><span class=``string''>', '</span><span class=``variable''>foreign_column</span><span class=``string''>' =&gt; '</span><span class=``variable''>user_id</span><span class=``string''>' }, ], }, ], }, { '</span><span class=``variable''>name</span><span class=``string''>' =&gt; '</span><span class=``variable''>user_pref</span><span class=``string''>', '</span><span class=``variable''>column_list</span><span class=``string''>' =&gt; [ { '</span><span class=``variable''>name</span><span class=``string''>' =&gt; '</span><span class=``variable''>user_id</span><span class=``string''>' , '</span><span class=``variable''>data_type</span><span class=``string''>' =&gt; '</span><span class=``keyword''>int</span><span class=``string''>' , '</span><span class=``variable''>is_req</span><span class=``string''>' =&gt; 1, }, { '</span><span class=``variable''>name</span><span class=``string''>' =&gt; '</span><span class=``variable''>pref_name</span><span class=``string''>' , '</span><span class=``variable''>data_type</span><span class=``string''>' =&gt; '</span><span class=``variable''>entitynm</span><span class=``string''>', '</span><span class=``variable''>is_req</span><span class=``string''>' =&gt; 1, }, { '</span><span class=``variable''>name</span><span class=``string''>' =&gt; '</span><span class=``variable''>pref_value</span><span class=``string''>', '</span><span class=``variable''>data_type</span><span class=``string''>' =&gt; '</span><span class=``variable''>generic</span><span class=``string''>' , '</span><span class=``variable''>is_req</span><span class=``string''>' =&gt; 0, }, ], '</span><span class=``variable''>unique_key_list</span><span class=``string''>' =&gt; [ { '</span><span class=``variable''>name</span><span class=``string''>' =&gt; '</span><span class=``variable''>PRIMARY</span><span class=``string''>', '</span><span class=``variable''>column_list</span><span class=``string''>' =&gt; [ '</span><span class=``variable''>user_id</span><span class=``string''>', '</span><span class=``variable''>pref_name</span><span class=``string''>', ], }, ], '</span><span class=``variable''>primary_key</span><span class=``string''>' =&gt; '</span><span class=``variable''>PRIMARY</span><span class=``string''>', # from unique keys list, others are surrogate '</span><span class=``string''>foreign_key_list</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'fk_user'</span><span class=``operator''>,</span> <span class=``string''>'foreign_table'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_auth'</span><span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_id'</span><span class=``operator''>,</span> <span class=``string''>'foreign_column'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_id'</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'person'</span><span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'person_id'</span><span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'int'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``string''>'default_val'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``string''>'auto_inc'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'alternate_id'</span><span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str20'</span> <span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>0</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'name'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str100'</span><span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>1</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'sex'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'str1'</span> <span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>0</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'father_id'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'int'</span> <span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>0</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'mother_id'</span> <span class=``operator''>,</span> <span class=``string''>'data_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'int'</span> <span class=``operator''>,</span> <span class=``string''>'is_req'</span> <span class=``operator''>=&gt;</span> <span class=``number''>0</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``string''>'unique_key_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'PRIMARY'</span> <span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``string''>'person_id'</span> <span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'sk_alternate_id'</span><span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``string''>'alternate_id'</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``string''>'primary_key'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'PRIMARY'</span><span class=``operator''>,</span> <span class=``comment''># from unique keys list, others are surrogate</span> <span class=``string''>'foreign_key_list =&gt; [ { '</span><span class=``variable''>name</span><span class=``string''>' =&gt; '</span><span class=``variable''>fk_father</span><span class=``string''>', '</span><span class=``variable''>foreign_table</span><span class=``string''>' =&gt; '</span><span class=``variable''>person</span><span class=``string''>', '</span><span class=``variable''>column_list</span><span class=``string''>' =&gt; [ { '</span><span class=``variable''>name</span><span class=``string''>' =&gt; '</span><span class=``variable''>father_id</span><span class=``string''>', '</span><span class=``variable''>foreign_column</span><span class=``string''>' =&gt; '</span><span class=``variable''>person_id</span><span class=``string''>' }, ], }, { '</span><span class=``variable''>name</span><span class=``string''>' =&gt; '</span><span class=``variable''>fk_mother</span><span class=``string''>', '</span><span class=``variable''>foreign_table</span><span class=``string''>' =&gt; '</span><span class=``variable''>person</span><span class=``string''>', '</span><span class=``variable''>column_list</span><span class=``string''>' =&gt; [ { '</span><span class=``variable''>name</span><span class=``string''>' =&gt; '</span><span class=``variable''>mother_id</span><span class=``string''>', '</span><span class=``variable''>foreign_column</span><span class=``string''>' =&gt; '</span><span class=``variable''>person_id</span><span class=``string''>' }, ], }, ], }, ); </span> </pre> <p>These are the main class properties:</p> <ol> <li> <p><strong>name</strong> - This mandatory string property is a unique identifier for this table within a single database, or within a single schema in a multiple-schema database. This property is case-sensitive so it works with database products that have case-sensitive schema (eg: MySQL), but it is still a good idea to never name your tables such that they would conflict if case-insensitive, so that the right thing can happen with a case-insensitive database product (eg: Oracle in standard usage).</p> </li> <li> <p><strong>column_list</strong> - This mandatory array property is a list of the column definitions that constitute this table. Each array element is a hash (or pseudo-object) having these properties:</p> <ol> <li> <p><strong>name</strong> - This mandatory string property is a unique identifier for this column within the table currently being defined. It has the same case-sensitivity rules governing the table name itself.</p> </li> <li> <p><strong>data_type</strong> - This mandatory property is either a DataType object or a string having the name of a DataType object, which can be used to lookup said object that was defined somewhere else but near-by. It is case-sensitive.</p> </li> <li> <p><strong>is_req</strong> - This boolean property is optional but recommended; if not explicitely set, it will default to false, unless the column has been marked as part of a unique key, in which case it will default to true. If this property is true, then the column will require a value, and any DML operations that try to set the column to null will fail. (A true value is like 'not null' and a false value is like 'null'.)</p> </li> <li> <p><strong>default_val</strong> - This scalar property is optional and if set its value must be something that is valid for the data type of this column. The current behaviour for what would happen if it isn't is undefined.</p> </li> <li> <p><strong>auto_inc</strong> - This boolean property is optional for use when the base_type of this column's data type is 'int', and it has no effect for the other base types (but support for other base types may be added). If this property is true, then the PDBD modules will attempt to mark this column as auto-incrementing; its value will be set from a special table-specific numerical sequence that increments by 1. This property may be replaced with a different feature.</p> </li> </ol> <li> <p><strong>unique_key_list</strong> - This array property is a list of the unique keys (or keys or unique constraints) that apply to this table. Each array element is a hash (or pseudo-object) for describing a single key and has these properties: 'name', 'column_list'. The 'name' property is a mandatory string and is a unique identifier for this key within the table; it has the same case-sensitivity rules governing table and column names. The 'column_list' property is an array with at least one element; each element is a string that must match the name of a column declared in this table. A key can be composed of one or more columns, and more than one key may use the same column.</p> </li> <li> <p><strong>primary_key</strong> - This string property is optional and if it is set then it must match the 'name' of an 'unique_key_list' element in the current table. This property is for identifying the primary key of the table; any other elements of 'unique_key_list' that exist will become surrogate (alternate) keys. Additionally, any columns used in a primary key must have their 'is_req' properties set to true (as required by either ANSI SQL or some databases).</p> </li> <li> <p><strong>foreign_key_list</strong> - This array property is a list of the foreign key constraints that are on column sets. Given that foreign keys define a relationship between two tables where values must be present in table A in order to be stored in table B, this class is defined to describe a relationship between said two tables in the object representing table B. Each array element is a hash (or pseudo-object) for describing a single constraint and has these properties: 'name', 'foreign_table', 'column_list'. The 'name' property is a mandatory string and is a unique identifier for this constraint within the table; it has the same case-sensitivity rules governing table and column names. The 'foreign_table' property is a mandatory string which must match the 'name' of a previously defined table. The 'column_list' property is an array with at least one element; each element is a hash having two values; the 'name' value is a mandatory string that must match the name of a column declared in this table; the 'foreign_column' value is a mandatory string that must match the name of a column declared in the table whose name is in 'foreign_table'. A foreign key constraint can be composed of one or more columns, and more than one constraint may use the same column; for each column used in this table, a separate column must be matched in the other table, and the other column needs to have the same data type.</p> </li> <li> <p><strong>index_list</strong> - This array property has the same format as 'unique_key_list' but it is not for creating unique constraints; rather, it is for indicating that we will often be doing DML operations that lookup records by values in specific column-sets, and we want to index those columns for better fetch performance (but slower modify performance). Note that indexing already happens with column-sets used for unique or presumably foreign keys, so specifying them here as well is probably redundant.</p> </li> </ol> <p> </p> <h2><a name=``dbix__portable__pdbi__dataset''>DBIx::Portable::PDBI::DataSet</a></h2> <p>This PDBI module is a container class that is meta-data from which DML command templates can be generated. Conceptually, a DataSet looks like a Table, since both represent or store a matrix of data, which has uniquely identifiable columns, and rows which can be uniquely identifiable but may not be. But unlike a Table, a DataSet does not have a name. In its simplest use, a DataSet is an interface to a single database table, and its public interface is identical to that of said table; this interface can be used to fetch or modify data stored in the table. This class can generate Command objects having types of: 'data_select', 'data_insert', 'data_update', 'data_delete', 'data_lock', 'data_unlock'. <em>Note: this paragraph was a rough draft.</em></p> <p> </p> <h2><a name=``dbix__portable__pdbi__view''>DBIx::Portable::PDBI::View</a></h2> <p>This PDBI module is a container class that describes a single database view, and would be used for such things as managing schema for the view (eg: create, alter, destroy), and describing the view's &quot;public interface&quot; (it looks like a table, with columns and rows) so other functionality like various DML operations or other views know how to use the view. Conceptually speaking, a database view is an abstracted interface to one or more database tables which are related to each other in a specific way; a view has its own name and can generally be used like a table. A View object has only two properties, which are a name and a DataSet object; put another way, a View object simply associates a name with a DataSet object. This class does not describe anything that is changed by DML activity, such as a count of stored records, or the current values of sequences attached to columns. This class can generate Command objects having types of: 'view_verify', 'view_create', 'view_alter', 'view_destroy'.</p> <p>Here is sample code for defining a few views with this class (rough draft):</p> <pre> <span class=``keyword''>my</span> <span class=``variable''>%view_info</span> <span class=``operator''>=</span> <span class=``keyword''>map</span> <span class=``operator''>{</span> <span class=``operator''>(</span> <span class=``variable''>$_</span><span class=``operator''>-&gt;</span><span class=``operator''>{</span><span class=``string''>name</span><span class=``operator''>}</span><span class=``operator''>,</span> <span class=``variable''>DBIx::Portable::PDBI::View</span><span class=``operator''>-&gt;</span><span class=``variable''>new</span><span class=``operator''>(</span> <span class=``variable''>$_</span> <span class=``operator''>)</span> <span class=``operator''>)</span> <span class=``operator''>}</span> <span class=``operator''>(</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user'</span><span class=``operator''>,</span> <span class=``string''>'source_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_auth'</span><span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``variable''>$table_info</span><span class=``operator''>{</span><span class=``string''>user_auth</span><span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_profile'</span><span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``variable''>$table_info</span><span class=``operator''>{</span><span class=``string''>user_profile</span><span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_id'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_auth'</span> <span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'login_name'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_auth'</span> <span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'login_pass'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_auth'</span> <span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'private_name'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_auth'</span> <span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'private_email'</span><span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_auth'</span> <span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'may_login'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_auth'</span> <span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'max_sessions'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_auth'</span> <span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'public_name'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_profile'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'public_email'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_profile'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'web_url'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_profile'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'contact_net'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_profile'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'contact_phy'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_profile'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'bio'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_profile'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'plan'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_profile'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'comments'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_profile'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``string''>'join_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'lhs_source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_auth'</span><span class=``operator''>,</span> <span class=``string''>'rhs_source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_profile'</span><span class=``operator''>,</span> <span class=``string''>'join_type'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'left'</span><span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'lhs_column'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_id'</span><span class=``operator''>,</span> <span class=``string''>'rhs_column'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'user_id'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'person_with_parents'</span><span class=``operator''>,</span> <span class=``string''>'source_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'self'</span><span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``variable''>$table_info</span><span class=``operator''>{</span><span class=``string''>person</span><span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'father'</span><span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``variable''>$table_info</span><span class=``operator''>{</span><span class=``string''>person</span><span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'mother'</span><span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``variable''>$table_info</span><span class=``operator''>{</span><span class=``string''>person</span><span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``string''>'column_list'</span> <span class=``operator''>=&gt;</span> <span class=``operator''>[</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'self_id'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'self'</span> <span class=``operator''>,</span> <span class=``string''>'column'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'person_id'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'self_name'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'self'</span> <span class=``operator''>,</span> <span class=``string''>'column'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'name'</span> <span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'father_id'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'father'</span><span class=``operator''>,</span> <span class=``string''>'column'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'person_id'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'father_name'</span><span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'father'</span><span class=``operator''>,</span> <span class=``string''>'column'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'name'</span> <span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'mother_id'</span> <span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'mother'</span><span class=``operator''>,</span> <span class=``string''>'column'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'person_id'</span><span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>{</span> <span class=``string''>'name'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'mother_name'</span><span class=``operator''>,</span> <span class=``string''>'source'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'mother'</span><span class=``operator''>,</span> <span class=``string''>'column'</span> <span class=``operator''>=&gt;</span> <span class=``string''>'name'</span> <span class=``operator''>,</span> <span class=``operator''>}</span><span class=``operator''>,</span> <span class=``operator''>]</span><span class=``operator''>,</span> <span class=``string''>'foreign_key_list =&gt; [ { '</span><span class=``variable''>lhs_source</span><span class=``string''>' =&gt; '</span><span class=``variable''>self</span><span class=``string''>', '</span><span class=``variable''>rhs_source</span><span class=``string''>' =&gt; '</span><span class=``variable''>father</span><span class=``string''>', '</span><span class=``variable''>join_type</span><span class=``string''>' =&gt; '</span><span class=``variable''>left</span><span class=``string''>', '</span><span class=``variable''>column_list</span><span class=``string''>' =&gt; [ { '</span><span class=``variable''>lhs_column</span><span class=``string''>' =&gt; '</span><span class=``variable''>person_id</span><span class=``string''>', '</span><span class=``variable''>rhs_column</span><span class=``string''>' =&gt; '</span><span class=``variable''>person_id</span><span class=``string''>', }, ], }, { '</span><span class=``variable''>lhs_source</span><span class=``string''>' =&gt; '</span><span class=``variable''>self</span><span class=``string''>', '</span><span class=``variable''>rhs_source</span><span class=``string''>' =&gt; '</span><span class=``variable''>mother</span><span class=``string''>', '</span><span class=``variable''>join_type</span><span class=``string''>' =&gt; '</span><span class=``variable''>left</span><span class=``string''>', '</span><span class=``variable''>column_list</span><span class=``string''>' =&gt; [ { '</span><span class=``variable''>lhs_column</span><span class=``string''>' =&gt; '</span><span class=``variable''>person_id</span><span class=``string''>', '</span><span class=``variable''>rhs_column</span><span class=``string''>' =&gt; '</span><span class=``variable''>person_id</span><span class=``string''>', }, ], }, ], }, ); </span> </pre> <p> </p> <hr /> <h1><a name=``author''>AUTHOR</a></h1> <p>Copyright (c) 1999-2003, Darren R. Duncan. All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. However, I do request that this copyright information and credits remain attached to the file. If you modify this module and redistribute a changed version then please attach a note listing the modifications. This module is available &quot;as-is&quot; and the author can not be held accountable for any problems resulting from its use.</p> <p>I am always interested in knowing how my work helps others, so if you put this module to use in any of your own products or services then I would appreciate (but not require) it if you send me the website url for said product or service, so I know who you are. Also, if you make non-proprietary changes to the module because it doesn't work the way you need, and you are willing to make these freely available, then please send me a copy so that I can roll desirable changes into the main release.</p> <p>Address comments, suggestions, and bug reports to <strong><a href=``mailto:perl@DarrenDuncan.net''>perl@DarrenDuncan.net</strong>.</p> <p> </p> <hr /> <h1><a name=``see_also''>SEE ALSO</a></h1> <p><code>perl(1)</code>, DBI, DBD::*.</p>

</body>

</html>

 C:\cpanrun\depot\main\contrib-patched\perl\CPAN\src\DBIx-Portable\blib/html/site/lib/DBIx/Portable.html