====== createTableSql ======
~~NOTOC~~
== See Also ==
[[v5:dictionary:column_attributes|Column Attributes Reference]]
[[v5:dictionary:executesqlarray|executeSqlArray()]]
== Syntax ==
array createTableSql (
string $tableName,
string $fields,
optional array $tableOptions
)
===== Description =====
The method ''createTableSql()'' creates the SQL statement necessary to create a table in the database and populates it with columns defined in ''$fields'' option. In order to create the table, the output of the command must be executed with the [[v5:dictionary:executesqlarray|executeSqlArray()]] method.
===== Parameters =====
==== $tableName =====
The table name must not yet exist in the database. Names must conform to any database specific requirements such as length limitations and name casing.
---------
$fields is a string, not an array
==== $fields ====
A string holding information regarding the columns to create in the new table. For a detailed description of the format of this string, see [[v5:dictionary:addcolumnsql|addColumnSql()]].
==== $tableOptions ====
An optional array of information that adds information regarding the table creation. This array may also contain field specific information, for example information pertaining to auto-increment fields. Another feature of this option is that it can be used to provide database specific options to the table itself, e.g.
$tabname = 'TEST';
$flds = 'column definitions....';
$opts = array('MYSQL'=>"ENGINE INNODB,COMPRESSION 'ZLIB'",
'DB2'=>'TABLESPACE LARGE_SPACE');
$sql = $db->createTableSql($tabname,$flds,$opts);
In the example above, the values provided in ''$opts'' will be added to the table if the **data provider** matches that of the currently attached database.
===== Usage =====
/*
* create a data dictionary object, using the database connection
*/
$dict = NewDataDictionary($db);
$tabname = "UCTABLE";
$flds = "
COL1 C(32) NOTNULL DEFAULT 'abc',
COL2 I DEFAULT 0,
COL3 N(12.2)
";
/*
* create the SQL statement necessary to create the table and its columns
*/
$sqlarray = $dict->createTableSQL($tabname, $flds);
/*
* This returns (for DB2)
Array
(
[0] => CREATE TABLE UCTABLE (
COL1 VARCHAR(32) DEFAULT 'abc' NOT NULL,
COL2 INTEGER DEFAULT 0,
COL3 DECIMAL(12,2)
)
)
*/
/*
* This statement actually creates the table
*/
$dict->executeSqlArray($sqlarray);