<?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_PDO.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_PDO.php"; class IdentityColumns extends PDO_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 {$this->schema}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 $this->PDOconn->exec($query); if(strcmp($this->PDOconn->errorCode(), "00000")) { $stmtError = $InsertNewEmployee_stmt->errorInfo(); $this->format_Output("\n\n" . $stmtError[0] . " - " . $stmtError[1] . ", " . $stmtError[2] . "\n\n"); } else { $this->format_Output("Succeeded \n"); } $toPrintToScreen = " Insert data into the table 'building' "; $this->format_Output($toPrintToScreen); $query = " INSERT INTO {$this->schema}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 $this->PDOconn->exec($query); if(strcmp($this->PDOconn->errorCode(), "00000")) { $stmtError = $InsertNewEmployee_stmt->errorInfo(); $this->format_Output("\n\n" . $stmtError[0] . " - " . $stmtError[1] . ", " . $stmtError[2] . "\n\n"); } else { $this->format_Output("Succeeded \n"); } $query = " SELECT BLDNUM, ADDR, CITY, FLOORS, EMPLOYEES FROM {$this->schema}building "; $this->format_Output($query); //Removing Excess white space. $query = preg_replace('/\s+/', " ", $query); // Execute the query $DataFromTabledept = $this->PDOconn->query($query); $toPrintToScreen = " | ID | ADDRESS | CITY | FLOORS |EMP |------|----------------------|------------|--------|--------------- "; $this->format_Output($toPrintToScreen); if($DataFromTabledept) { // retrieve and display the result from the xquery while($Dept = $DataFromTabledept->fetch(PDO::FETCH_ASSOC)) { $this->format_Output(sprintf("| %4s | %20s | %10s | %6s | %s \n", $Dept['BLDNUM'], $Dept['ADDR'], $Dept['CITY'], $Dept['FLOORS'], $Dept['EMPLOYEES'] ) ); } } else { $stmtError = $DataFromTableCompanyA->errorInfo(); $this->format_Output("\n\n" . $stmtError[0] . " - " . $stmtError[1] . ", " . $stmtError[2] . "\n\n"); } $toPrintToScreen = " Dropping the table 'building "; $this->format_Output($toPrintToScreen); $query = " DROP TABLE {$this->schema}building "; $this->format_Output($query); //Removing Excess white space. $query = preg_replace('/\s+/', " ", $query); // Execute the query $this->PDOconn->exec($query); if(strcmp($this->PDOconn->errorCode(), "00000")) { $stmtError = $InsertNewEmployee_stmt->errorInfo(); $this->format_Output("\n\n" . $stmtError[0] . " - " . $stmtError[1] . ", " . $stmtError[2] . "\n\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 {$this->schema}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 $this->PDOconn->exec($query); if(strcmp($this->PDOconn->errorCode(), "00000")) { $stmtError = $InsertNewEmployee_stmt->errorInfo(); $this->format_Output("\n\n" . $stmtError[0] . " - " . $stmtError[1] . ", " . $stmtError[2] . "\n\n"); } else { $this->format_Output("Succeeded \n"); } $toPrintToScreen = " Insert data into the table 'warehouse' "; $this->format_Output($toPrintToScreen); $query = " INSERT INTO {$this->schema}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 $this->PDOconn->exec($query); if(strcmp($this->PDOconn->errorCode(), "00000")) { $stmtError = $InsertNewEmployee_stmt->errorInfo(); $this->format_Output("\n\n" . $stmtError[0] . " - " . $stmtError[1] . ", " . $stmtError[2] . "\n\n"); } else { $this->format_Output("Succeeded \n"); } $query = " SELECT WHNUM, ADDR, CITY, CAPACITY, EMPLOYEES FROM {$this->schema}warehouse "; $this->format_Output($query); //Removing Excess white space. $query = preg_replace('/\s+/', " ", $query); // Execute the query $DataFromTabledept = $this->PDOconn->query($query); $toPrintToScreen = " | ID | ADDRESS | CITY | CAPACITY |EMP |------|----------------------|------------|----------|--------------- "; $this->format_Output($toPrintToScreen); if($DataFromTabledept) { // retrieve and display the result from the xquery while($Dept = $DataFromTabledept->fetch(PDO::FETCH_ASSOC)) { $this->format_Output(sprintf("| %4s | %20s | %10s | %8s | %s \n", $Dept['WHNUM'], $Dept['ADDR'], $Dept['CITY'], $Dept['CAPACITY'], $Dept['EMPLOYEES'] ) ); } $toPrintToScreen = " NOTE: Defining an Identity on a Column dose not imply a unique value for each row! To ensure a unique value for each row, define an unique index or primary key on the Column "; $this->format_Output($toPrintToScreen); } else { $stmtError = $DataFromTableCompanyA->errorInfo(); $this->format_Output("\n\n" . $stmtError[0] . " - " . $stmtError[1] . ", " . $stmtError[2] . "\n\n"); } $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 $this->PDOconn->exec($query); if(strcmp($this->PDOconn->errorCode(), "00000")) { $stmtError = $InsertNewEmployee_stmt->errorInfo(); $this->format_Output("\n\n" . $stmtError[0] . " - " . $stmtError[1] . ", " . $stmtError[2] . "\n\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(); ?>