You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by bp...@apache.org on 2009/12/03 03:18:54 UTC

svn commit: r886656 - /db/derby/docs/trunk/src/tools/ctoolsimportidentitycol.dita

Author: bpendleton
Date: Thu Dec  3 02:18:44 2009
New Revision: 886656

URL: http://svn.apache.org/viewvc?rev=886656&view=rev
Log:
DERBY-482: Cover GENERATED BY DEFAULT in "Importing with identity cols" page

This change adds and re-organizes the text on the "Importing into tables
with identity columns" page in the Tools guide. Previously, the page
described considerations for a table with a GENERATED ALWAYS column; this
change adds additional information to describe situations that arise with
GENERATED BY DEFAULT columns.


Modified:
    db/derby/docs/trunk/src/tools/ctoolsimportidentitycol.dita

Modified: db/derby/docs/trunk/src/tools/ctoolsimportidentitycol.dita
URL: http://svn.apache.org/viewvc/db/derby/docs/trunk/src/tools/ctoolsimportidentitycol.dita?rev=886656&r1=886655&r2=886656&view=diff
==============================================================================
--- db/derby/docs/trunk/src/tools/ctoolsimportidentitycol.dita (original)
+++ db/derby/docs/trunk/src/tools/ctoolsimportidentitycol.dita Thu Dec  3 02:18:44 2009
@@ -22,25 +22,33 @@
 <title>Import into tables that contain identity columns</title>
 <shortdesc>You can use the either the SYSCS_UTIL.SYSCS_IMPORT_DATA procedure
 or the SYSCS_UTIL.SYSCS_IMPORT_DATA_LOBS_FROM_EXTFILE procedure to import
-data into a table that contains an identity column. </shortdesc>
+data into a table that contains an identity column.
+The approach that you take depends on whether the identity column is
+GENERATED ALWAYS or GENERATED BY DEFAULT.
+</shortdesc>
 <prolog><metadata>
 <keywords><indexterm>importing data<indexterm>tables with identity columns</indexterm></indexterm>
 </keywords>
 </metadata></prolog>
 <conbody>
-<p>If the identity column is defined as GENERATED ALWAYS, an identity value
-is generated for a table row whenever the corresponding row field in the input
-file does not contain a value for the identity column. When a corresponding
-row field in the input file already contains a value for the identity column,
-the row cannot be inserted into the table and the import operation will fail.
-To prevent such scenarios, the following examples show how to specify parameters
-in the SYSCS_UTIL.SYSCS_IMPORT_DATA and SYSCS_UTIL.SYSCS_IMPORT_DATA_LOBS_FROM_EXTFILE
-procedures to ignore data for the identity column from the file, or omit the
-column name from the insert column list.</p>
+<section><title>Identity columns and the REPLACE parameter</title>
 <p>If the <parmname>REPLACE</parmname> parameter is used during import, <ph
 conref="../conrefs.dita#prod/productshortname"></ph> resets its internal counter
 of the last identity value for a column to the initial value defined for the
 identity column.</p>
+</section>
+<section><title>Identity column is GENERATED ALWAYS</title>
+<p>If the identity column is defined as GENERATED ALWAYS, an identity value
+is always generated for a table row.
+When a corresponding
+row in the input file already contains a value for the identity column,
+the row cannot be inserted into the table and the import operation will fail.
+</p>
+<p>
+To prevent such failure, the following examples show how to specify parameters
+in the SYSCS_UTIL.SYSCS_IMPORT_DATA and SYSCS_UTIL.SYSCS_IMPORT_DATA_LOBS_FROM_EXTFILE
+procedures to ignore data for the identity column from the file, and omit the
+column name from the insert column list.</p>
 <p>The following table definition contains an identity column, <codeph>c2</codeph> and
 is used in the examples below:</p>
 <codeblock>CREATE TABLE tab1 (c1 CHAR(30), c2 INT GENERATED ALWAYS AS IDENTITY, 
@@ -56,7 +64,7 @@
 you call the procedure. For example:   <codeblock>CALL SYSCS_UTIL.SYSCS_IMPORT_DATA (NULL, 'TAB1', 'C1,C3,C4', 
     null, 'myfile.del',null, null, null, 0)
    </codeblock></li>
-<li>Suppose that you want import data into <codeph>tab1</codeph> from a file <codeph>empfile.del</codeph> that
+<li>Suppose that you want to import data into <codeph>tab1</codeph> from a file <codeph>empfile.del</codeph> that
 also has identity column information. The file contains three fields with
 the following data: <codeblock>Robert,1,45.2,J
 Mike,2,23.4,I
@@ -66,5 +74,71 @@
 procedure. For example: <codeblock>CALL SYSCS_UTIL.SYSCS_IMPORT_DATA (NULL, 'TAB1', 'C1,C3,C4', 
     '1,3,4', 'empfile.del',null, null, null, 0)</codeblock></li>
 </ul>
+</section>
+<section><title>Identity column is GENERATED BY DEFAULT</title>
+<p>
+If the identity column is defined as GENERATED BY DEFAULT, an identity value
+is only generated for a table row if no explicit value is given.
+This means that you have several options, depending on the contents of your
+input file, and the desired outcome of the import processing:
+<ul>
+<li>You may omit the identity column from the insert column list, in which case 
+<ph conref="../conrefs.dita#prod/productshortname"></ph>
+will generate a new value for the identity column for each input row.
+You may use this option whether or not the input file contains values for
+the identity column, but
+note that if the input file contains values for the identity column, you
+must also then omit the identity column from the column indexes when you
+call the procedure.
+</li>
+<li>You may include the identity column in the insert column list, in which case
+<ph conref="../conrefs.dita#prod/productshortname"></ph>
+will use the column values from the input file. Of course, this option is
+only available if the input file actually contains values for the identity
+column.
+</li>
+</ul>
+</p>
+<p>The following table definition contains an identity column,
+<codeph>c2</codeph> and is used in the examples below:</p>
+<codeblock>CREATE TABLE tab1 (c1 CHAR(30),
+   c2 INT GENERATED BY DEFAULT AS IDENTITY, 
+   c3 REAL, c4 CHAR(1))</codeblock>
+<ul>
+<li>Suppose that you want to import data into <codeph>tab1</codeph> from a
+file <codeph>myfile.del</codeph> that does not have identity column information.
+The <codeph>myfile.del</codeph> file contains three fields with the following
+data: <codeblock>Robert,45.2,J
+Mike,76.9,K
+Leo,23.4,I   </codeblock> To import the data, you must explicitly list the
+column names in the <codeph>tab1</codeph> table except for the identity column <codeph>c2</codeph> when
+you call the procedure. For example:   <codeblock>CALL SYSCS_UTIL.SYSCS_IMPORT_DATA (NULL, 'TAB1', 'C1,C3,C4', 
+    null, 'myfile.del',null, null, null, 0)
+   </codeblock></li>
+<li>Suppose that you want to import data into <codeph>tab1</codeph> from a file <codeph>empfile.del</codeph> that
+also has identity column information. The file contains three fields with
+the following data: <codeblock>Robert,1,45.2,J
+Mike,2,23.4,I
+Leo,3,23.4,I   </codeblock> 
+In this case, suppose that you wish to use the existing identity column values
+from the input file.
+To import the data, you may simply pass <codeph>null</codeph>
+for the insert column list and column indexes parameters when you call the
+procedure. For example: <codeblock>CALL SYSCS_UTIL.SYSCS_IMPORT_DATA (NULL, 'TAB1', NULL, 
+    NULL, 'empfile.del',null, null, null, 0)</codeblock></li>
+<li>Suppose (again) that you want to import data into <codeph>tab1</codeph>
+from a file <codeph>empfile.del</codeph> that
+also has identity column information, but in this case, suppose that you
+do <b>not</b> wish to use the identity column values from the input file,
+but would prefer to allow
+<ph conref="../conrefs.dita#prod/productshortname"></ph>
+to generate new identity column values instead.
+In this case, to import the data, you must specify
+an insert column list without the identity column <codeph>c2</codeph> and
+specify the column indexes without identity column data when you call the
+procedure. For example: <codeblock>CALL SYSCS_UTIL.SYSCS_IMPORT_DATA (NULL, 'TAB1', 'C1,C3,C4', 
+    '1,3,4', 'empfile.del',null, null, null, 0)</codeblock></li>
+</ul>
+</section>
 </conbody>
 </concept>