<?php
/***************************************************************************
* (c) Copyright IBM Corp. 2007 All rights reserved.
*
* The following sample of source code ("Sample") is owned by International
* Business Machines Corporation or one of its subsidiaries ("IBM") and is
* copyrighted and licensed, not sold. You may use, copy, modify, and
* distribute the Sample in any form without payment to IBM, for the purpose
* of assisting you in the development of your applications.
*
* The Sample code is provided to you on an "AS IS" basis, without warranty
* of any kind. IBM HEREBY EXPRESSLY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS
* OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions
* do not allow for the exclusion or limitation of implied warranties, so the
* above limitations or exclusions may not apply to you. IBM shall not be
* liable for any damages you suffer as a result of using, copying, modifying
* or distributing the Sample, even if IBM has been advised of the
* possibility of such damages.
*
****************************************************************************
*
* SOURCE FILE NAME: TblIdentityCol_DB2.php
*
* SAMPLE: How to use Identity Columns
*
* SQL Statements USED:
* CREATE TABLE
* INSERT
* SELECT
* DROP
*
****************************************************************************
*
* For more information on the sample programs, see the README file.
*
***************************************************************************/
require_once "UtilIOHelper.php";
require_once "UtilConnection_DB2.php";
class IdentityColumns extends DB2_Connection
{
public $SAMPLE_HEADER =
"
echo '
THIS SAMPLE SHOWS HOW TO USE IDENTITY COLUMNS
';
";
function __construct($initialize = true)
{
parent::__construct($initialize);
$this->make_Connection();
}
public function generate_Always()
{
$toPrintToScreen = "
----------------------------------------------------------
USE THE SQL STATEMENT:
CREATE TABLE
INSERT
TO CREATE AN IDENTITY COLUMN WITH VALUE 'GENERATED ALWAYS'
AND TO INSERT DATA IN THE TABLE
";
$this->format_Output($toPrintToScreen);
$query = "
CREATE TABLE building(bldnum INT GENERATED ALWAYS
AS IDENTITY(START WITH 1, INCREMENT BY 1),
addr VARCHAR(20),
city VARCHAR(10),
floors SMALLINT,
employees SMALLINT)
";
$this->format_Output($query);
//Removing Excess white space.
$query = preg_replace('/\s+/', " ", $query);
// Execute the query
if(db2_exec($this->dbconn, $query) === false)
{
$this->format_Output(db2_stmt_errormsg() . "\n");
}
else
{
$this->format_Output("Succeeded \n");
}
$toPrintToScreen = "
Insert data into the table 'building'
";
$this->format_Output($toPrintToScreen);
$query = "
INSERT INTO building(bldnum, addr, city, floors, employees)
VALUES(DEFAULT, '110 Woodpart St', 'Smithville', 3, 10),
(DEFAULT, '123 Sesame Ave' , 'Jonestown' , 16, 13),
(DEFAULT, '738 Eglinton Rd', 'Whosburg' , 2, 10),
(DEFAULT, '832 Lesley Blvd', 'Centertown', 2, 18)
";
$this->format_Output($query);
//Removing Excess white space.
$query = preg_replace('/\s+/', " ", $query);
// Execute the query
if(db2_exec($this->dbconn, $query) === false)
{
$this->format_Output(db2_stmt_errormsg() . "\n");
}
else
{
$this->format_Output("Succeeded \n");
}
$query = "
SELECT BLDNUM, ADDR, CITY, FLOORS, EMPLOYEES FROM building
";
$this->format_Output($query);
//Removing Excess white space.
$query = preg_replace('/\s+/', " ", $query);
// Execute the query
$DataFromTabledept = db2_exec($this->dbconn, $query);
$toPrintToScreen = "
| ID | ADDRESS | CITY | FLOORS |EMP
|------|----------------------|------------|--------|---------------
";
$this->format_Output($toPrintToScreen);
if($DataFromTabledept)
{
// retrieve and display the result from the xquery
while($Dept = db2_fetch_assoc($DataFromTabledept))
{
$this->format_Output(sprintf("| %4s | %20s | %10s | %6s | %s \n",
$Dept['BLDNUM'],
$Dept['ADDR'],
$Dept['CITY'],
$Dept['FLOORS'],
$Dept['EMPLOYEES']
)
);
}
db2_free_result($DataFromTabledept);
}
else
{
$this->format_Output(db2_stmt_errormsg());
}
$toPrintToScreen = "
Dropping the table 'building
";
$this->format_Output($toPrintToScreen);
$query = "
DROP TABLE building
";
$this->format_Output($query);
//Removing Excess white space.
$query = preg_replace('/\s+/', " ", $query);
// Execute the query
if(db2_exec($this->dbconn, $query) === false)
{
$this->format_Output(db2_stmt_errormsg() . "\n");
}
else
{
$this->format_Output("Succeeded \n");
}
$this->commit();
} // generatedAlways
public function generate_By_Default()
{
$toPrintToScreen = "
----------------------------------------------------------
USE THE SQL STATEMENT:
CREATE TABLE
INSERT
TO CREATE AN IDENTITY COLUMN WITH VALUE 'GENERATED BY DEFAULT'
AND TO INSERT DATA IN THE TABLE
";
$this->format_Output($toPrintToScreen);
$query = "
CREATE TABLE warehouse(whnum INT GENERATED BY DEFAULT
AS IDENTITY(START WITH 1, INCREMENT BY 1),
addr VARCHAR(20),
city VARCHAR(10),
capacity SMALLINT,
employees SMALLINT)
";
$this->format_Output($query);
//Removing Excess white space.
$query = preg_replace('/\s+/', " ", $query);
// Execute the query
if(db2_exec($this->dbconn, $query) === false)
{
$this->format_Output(db2_stmt_errormsg() . "\n");
}
else
{
$this->format_Output("Succeeded \n");
}
$toPrintToScreen = "
Insert data into the table 'warehouse'
";
$this->format_Output($toPrintToScreen);
$query = "
INSERT INTO warehouse(whnum, addr, city, capacity, employees)
VALUES(DEFAULT, '92 Bothfield Dr' , 'Yorkvile' , 23, 100),
(DEFAULT, '33 Giant Road' , 'Centertown', 100, 22),
( 3, '8200 Warden Blvd', 'Smithville', 254, 10),
(DEFAULT, '53 4th Ave' , 'Whosburg' , 97, 28)
";
$this->format_Output($query);
//Removing Excess white space.
$query = preg_replace('/\s+/', " ", $query);
// Execute the query
if(db2_exec($this->dbconn, $query) === false)
{
$this->format_Output(db2_stmt_errormsg() . "\n");
}
else
{
$this->format_Output("Succeeded \n");
}
$query = "
SELECT WHNUM, ADDR, CITY, CAPACITY, EMPLOYEES FROM warehouse
";
$this->format_Output($query);
//Removing Excess white space.
$query = preg_replace('/\s+/', " ", $query);
// Execute the query
$DataFromTabledept = db2_exec($this->dbconn, $query);
$toPrintToScreen = "
| ID | ADDRESS | CITY | CAPACITY |EMP
|------|----------------------|------------|----------|---------------
";
$this->format_Output($toPrintToScreen);
if($DataFromTabledept)
{
// retrieve and display the result from the xquery
while($Dept = db2_fetch_assoc($DataFromTabledept))
{
$this->format_Output(sprintf("| %4s | %20s | %10s | %8s | %s \n",
$Dept['WHNUM'],
$Dept['ADDR'],
$Dept['CITY'],
$Dept['CAPACITY'],
$Dept['EMPLOYEES']
)
);
}
db2_free_result($DataFromTabledept);
$toPrintToScreen = "
NOTE:
An Identity Column with value 'GENERATED BY DEFAULT' may
not contain a unique value for each row! To ensure a unique
value for each row, define an index on the Identity Column.
";
$this->format_Output($toPrintToScreen);
}
else
{
$this->format_Output(db2_stmt_errormsg());
}
$toPrintToScreen = "
Dropping the table 'warehouse'
";
$this->format_Output($toPrintToScreen);
$query = "
DROP TABLE warehouse
";
$this->format_Output($query);
//Removing Excess white space.
$query = preg_replace('/\s+/', " ", $query);
// Execute the query
if(db2_exec($this->dbconn, $query) === false)
{
$this->format_Output(db2_stmt_errormsg() . "\n");
}
else
{
$this->format_Output("Succeeded \n");
}
$this->commit();
} //generatedByDefault
}
$Run_Sample = new IdentityColumns();
$Run_Sample->generate_Always();
$Run_Sample->generate_By_Default();
/*******************************************************
* We rollback at the end of all samples to ensure that
* there are not locks on any tables. The sample as is
* delivered does not need this. The author of these
* samples expects that you the read of this comment
* will play and learn from them and the reader may
* forget commit or rollback their action as the
* author has in the past.
* As such this is here:
******************************************************/
$Run_Sample->rollback();
// Close the database connection
$Run_Sample->close_Connection();
?>